为什么我不能拥有某些私有会员功能?
Why can't I have certain private member functions?
给定一个类,为什么我们可以实现某些私有成员函数,而不能实现其他私有成员函数?例如,见下文:
header file:
class A
{
....
struct B
{
....
}
int f();
B* g();
}
cpp file:
int A::f(){...} // will compile
B* A::g(){...} // will not compile!
错误是"未知类型名称'B'",但我的实际代码有更多细节。
B* A::g(){...}
B
在A
之外不可见。
A::B* A::g(){...}
这与私人成员无关。由于B
是在A
内声明的,因此它不在全局范围内,因此您需要指定您所指B
。
对于另一个答案,您可以使用尾随返回类型
auto A::g() -> B* {...}
在A::g()
之前,您必须使用A::B
.A::g()
后,您可以简单地使用B
.
相关文章:
- 为什么我不能拥有某些私有会员功能?
- 为什么这个base64解码/编码功能不能正常工作?
- C++ - 多态性:不能使用功能
- 为什么在传递lambda而不是功能指针时不能推断模板参数
- MPI_Op_create:候选功能不可行.自定义结构指针不能解释为空指针
- 制作uint128库却不能,找出什么功能搞砸了
- opencv2 可以使用 cmake 构建,但不能使用 CLion "build" 功能?
- 我不能在函数中使用新功能C++构建
- 不能在QtCreator中使用使用g++ 7.2的c ++ 17功能
- 为什么不能将std :: stol转换为std ::功能对象
- 为什么这两个功能不能超载
- 为什么不能从指针施放到模板功能中的指针
- 我正在使用Xcode进行c ++编程和学习。为什么我不能在一个项目中放置许多具有 MAIN 功能的单独源文件?
- 我不能在不使用指针的情况下返回 2d 数组!我正在制作一个井字游戏类型游戏,这是我的向上移动功能
- 虚拟功能不能是朋友
- "官方"CUDA 减少功能不能接受某些数字?
- 问题.所有功能都可以在发布文件夹中工作,但不能在程序文件中工作
- std::ref 和交换功能似乎不能很好地协同工作
- 在NVI成语下,为什么虚拟功能不能公开?
- 洗牌功能不能正常工作