不能使用公共嵌套类作为私有方法参数

2024-02-26

在下面的代码中:

class Outer {
   private:
    void f_private(Outer::Inner in); // Wrong

   public:
    class Inner {};
    void f_public(Outer::Inner in); // OK
};

f_private()不能使用嵌套类Outer::Inner作为参数类型。但这样做是可以的f_public().

有人可以向我解释一下这是基于什么规则吗?它有什么好处?


问题不在于它是公共的还是私人的,而是秩序。这可能看起来很奇怪,对于其他类成员来说这不是问题,但请考虑在这种情况下您正在声明一个新的用户定义类型,因为您必须在使用它之前声明它:

class Outer 
{
public:
    class Inner {};   
    void f_public(Outer::Inner in);  // OK

private:
    void f_private(Outer::Inner in); // OK
};

Or:

class Outer
{
public:
    class Inner;                          // declare
    void f_public(Outer::Inner in);       // OK

private:
    void f_private(Outer::Inner in);       // OK
};

class Outer::Inner {};                     // define

void Outer::f_private(Outer::Inner in){}   // method definition after class definition

void Outer::f_public(Outer::Inner in){}    //

如果您使用类作为指针或引用参数,则无需之前定义它,前向声明就足够了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不能使用公共嵌套类作为私有方法参数 的相关文章

  • 金特 + XNA (C#)

    是否可以使用jint http jint codeplex com操作使用 XNA C 创建的 3D 环境 并向该环境添加功能 再次使用 jint 作为 Jint 的贡献者 我会推荐你Jint http jint codeplex com
  • Volatile.Read 和 Volatile.Write 背后的逻辑是什么?

    来自 MSDN Volatile Read 读取字段的值 在需要它的系统上 插入一个 阻止处理器重新排序内存的内存屏障 操作如下 如果在该方法之后出现读或写 代码 处理器无法移动它before这个方法 and Volatile Write
  • 如何使用 ASP.NET MVC 编辑多选列表?

    我想编辑一个如下所示的对象 我希望用 UsersGrossList 中的一个或多个用户填充 UsersSelectedList 使用 mvc 中的标准编辑视图 我只得到映射的字符串和布尔值 下面未显示 我在 google 上找到的许多示例都
  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • c# 从另一个类中的另一个静态事件引发事件

    需要帮助从另一个班级调用事件 我有已声明事件的课程 public class MxPBaseGridView GridView public event AddNewItemsToPopUpMenuEventHandler AddNewIt
  • IEnumerable 的 String.Join(string, string[]) 的类似物

    class String包含非常有用的方法 String Join string string 它从数组创建一个字符串 用给定的符号分隔数组的每个元素 但一般来说 它不会在最后一个元素之后添加分隔符 我将它用于 ASP NET 编码 以用
  • C free() 是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 malloc 和 free 如何工作 https stackoverflow com questions 1119134 how malloc and free work include
  • XPATH 查询、HtmlAgilityPack 和提取文本

    我一直在尝试从名为 tim new 的类中提取链接 我也得到了解决方案 给出了解决方案 片段和必要的信息here https stackoverflow com questions 2982862 extracting a table ro
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • C# 处理标准输入

    我目前正在尝试通过命令行断开与网络文件夹的连接 并使用以下代码 System Diagnostics Process process2 new System Diagnostics Process System Diagnostics Pr
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • 如何使用 Roslyn 通过扩展方法、静态类中的方法以及带有 ref/out 参数的方法来访问调用

    我正在致力于创建一个开源项目 用于创建 NET UML 序列图 该项目利用名为 js sequence diagrams 的 javascript 库 我不确定 Roslyn 是适合这项工作的工具 但我想我应该尝试一下 所以我整理了一些概念
  • 在 C# 中何时使用 ArrayList 而不是 array[]?

    我经常使用一个ArrayList而不是 正常 array 当我使用时 我感觉好像我在作弊 或懒惰 ArrayList 什么时候可以使用ArrayList在数组上 数组是强类型的 并且可以很好地用作参数 如果您知道集合的长度并且它是固定的 则
  • 通过 C# Mailkit / Mimekit 发送电子邮件,但出现服务器证书错误

    Visual Studio 2015 中的 0 代码 1 我正在使用 Mailkit 最新版本 1 18 1 1 从我自己的电子邮件服务器发送电子邮件 2 电子邮件服务器具有不受信任的自签名证书 3 我在代码中添加了以下两行 以忽略服务器证
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad
  • 如何提高环复杂度?

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的
  • 为什么表达式 a = a + b - ( b = a ) 在 C++ 中给出序列点警告?

    以下是测试代码 int main int a 3 int b 4 a a b b a cout lt lt a lt lt a lt lt lt lt b lt lt b lt lt n return 0 编译此命令会出现以下警告 gt g
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost

随机推荐

  • 如何在java中验证unix时间戳?

    我需要验证给定的输入字符串是否有效Timestamp以毫秒为单位 例如 如果给定Timestamp String time 1310966356458 那么它应该返回true if String time 1000 那么它应该返回 fals
  • 我可以通过在 Airflow 中向运算符添加更多 cpu 来提高处理速度吗?

    In airflow cfg有一个部分称为 operators where default cpus被设置为1 and default ram and default disk都设置为512 我想了解如果增加这些参数是否会提高处理速度 我查
  • 基于 JWT 的 标签身份验证?

    假设我有一个单页面应用程序 它使用 JWT 令牌对后端 REST api 进行身份验证 我在执行 REST 请求时在 http 标头内传输 JWT 令牌 到目前为止 一切都很好 现在 假设我想从服务器下载图像 并且我希望该图像只能由经过身份
  • 替换文件路径中的分隔符

    我正在 VS 2008 中开发一个 C Web 应用程序 我让用户选择一个输入文件 然后将文件路径存储在一个字符串变量中 但是 它将这条路径存储为 C folder 所以我的问题是如何将此文件路径转换为单个 谢谢大家的帮助 请原谅我 因为我
  • 反转列表时出现意外结果

    我需要对下面代码的意外结果进行一些解释 似乎是由于一些错误 reverse b gt b reverse reverse x x reverse x xs last x xs reverse xs Main gt reverse 0 8 2
  • 无法将类型 string 隐式转换为 System.date.time 但在 datetime 中声明

    我是 C 的初学者 编写了一些代码 但出现错误 错误是 无法将字符串类型隐式转换为 System date time 但我在这里看到我在字符串中声明 public partial class HDate private string Sta
  • 为什么当我 pip freeze 时没有出现 setuptools 1.3.1?

    我在跑步virtualenvwrapper和 Ubuntu 12 04 上的朋友 virtualenvwrapper 1 7 1 2 virtualenv 1 7 1 2 pip 1 0 Distribute 0 6 24 Python 2
  • 从 perf 获取用户空间堆栈信息

    我目前正在尝试在我正在测试的 PostgreSQL 版本中追踪一些幻像 I O 它是一个多进程服务器 将磁盘 I O 关联回特定后端和查询并不简单 我还以为Linux的perf工具将是理想的选择 但我正在努力捕获块 I O 性能计数器指标并
  • SQL中如何知道记录的插入日期

    我在用phpMyAdmin对于我的项目 我有一张没有的桌子date datetime field 我想知道是否有办法知道我何时在数据库中插入每条记录 在设计数据库时 如果您忘记保留一个额外的字段来存储一行的插入时间 那么您只剩下一个选项来了
  • “激活”的 RESTful URL

    我有一个资源 project 可以激活和停用 用于此目的的最 RESTful URL 端点是什么 现在我在想 projects id activate and projects id deactivate 但我不认为这很RESTful 另外
  • 为什么要检查 cls 是否是 __subclasshook__ 中的类?

    In the Python 标准库文档 https docs python org 3 library abc html abc ABCMeta subclasshook 示例实现 subclasshook is class MyItera
  • 替代数字之和 (XML/XSL)

    需要在使用 XSLT 从 XML 文件接收的数字中添加备用数字 例如 如果我收到 123456789 我需要使用 XSLT 函数从最右边计算备用数字总和 我对此有什么建议吗 谢谢 拉克斯米坎特 使用 XSLT 2 0 可以非常轻松地做到这一
  • 使用 dplyr 总结逻辑数据帧

    我正在尝试使用两个变量来总结数据框 我基本上想通过变量 2 分解变量 1 以便在 100 堆积条形图中绘制结果 我有多个逻辑类型的列 它们可以分为两个主要类别 用于创建细分 我尝试过使用gather from dplyr将数据帧转换为长格式
  • Unity 5.4.2f-GVR13 中的 Daydream 非 VR 模式 [重复]

    这个问题在这里已经有答案了 上周我尝试将我的 Unity 项目集成到 Daydream 集成进展顺利 现在我试图将第一个场景 包括登录过程 所以我需要 android 软键盘 与应用程序的其余部分分开 我希望应用程序像任何 android
  • 在 C# 中记录对象的所有属性。如何记录内部对象属性?

    我试图 1 记录对象的所有属性 以及 2 其中特定对象类型的所有属性 我可以做 1 但不能做 2 现在就是这种情况 foreach PropertyDescriptor descriptor in TypeDescriptor GetPro
  • 当查询使用包含时,Rails 如何处理 has_many?

    如果我有一个包含许多帖子的用户模型 那么在以下场景中 Rails 将对数据库执行多少个查询 class User has many posts this is the main method in question def has post
  • msysGit:为什么git日志输出空行?

    当我在终端窗口底部键入命令时 插入的空白行似乎越少 如果我在终端窗口的顶部输入它 它会插入几乎整个窗口高度的空白行 如果我在最底部键入它 则不会插入空行 看起来分页程序正在将输出推送到终端窗口的底部 但我希望输出位于我的命令的正下方或顶部
  • 如何检查是否隐式生成了移动构造函数?

    我有几个类 我希望检查是否正在生成默认移动构造函数 有没有办法检查这一点 无论是编译时断言 还是解析生成的目标文件 或者其他 励志例子 class MyStruct public ComplicatedBaseClass std vecto
  • 如何构建、分区和构建大型 MVC 应用程序以便以小的增量片段进行部署?

    我们将开发一个非常大的垂直市场 Web 应用程序 并且倾向于 MVC 方法 它将有 1 个应用程序中所有视图共用的母版页 主控会为整个应用提供一个导航 搜索框架 这将允许用户搜索和选择实体 然后导航到要执行的功能 数据库模型将有 700 到
  • 不能使用公共嵌套类作为私有方法参数

    在下面的代码中 class Outer private void f private Outer Inner in Wrong public class Inner void f public Outer Inner in OK f pri