类中的嵌套类或结构
代码先行:
//.h 文件
class A
{
public:
A();
B makeB(int); //question 1
//protected:
struct B {
int _id;
B(int id);
}
};
//.cpp 文件
A::A()
{ cout<<"A ctor\n"; }
B A::makeB(int id) //question 2
{ return B(id); }
2 个问题:
1.我应该将 makeB() 函数放在 struct B 的定义之后吗?
2.在.cpp文件中,应该在每个B前面加上A:: ?
PS: 1.如果makeB函数不处理B实例,而是处理B指针或引用,我可以在makeB前面放置struct B的前向声明吗? (我只是不想将 struct B 的定义放在 mem-funcs 前面)。
Code goes first:
//.h file
class A
{
public:
A();
B makeB(int); //question 1
//protected:
struct B {
int _id;
B(int id);
}
};
//.cpp file
A::A()
{ cout<<"A ctor\n"; }
B A::makeB(int id) //question 2
{ return B(id); }
2 questions:
1.Should I put makeB() function after the definition of struct B?
2.In .cpp file, should prefix every B with A:: ?
PS:
1.If makeB function doesn't deal with B instances, but B pointers or refs, can I put a forward decl of struct B in front of makeB? (I just don't want put the definition of struct B in front of mem-funcs).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这编译得很好:
This compiles fine:
Q1.是的(它需要知道struct B的大小)
QPS1。是的(如果它只使用指向 B 的指针,则不需要知道大小)
Q2。另外,您可以编写“using A::B”,然后像往常一样使用“B”。
Q1. Yes (it needs to know the size of struct B)
QPS1. Yes (if it only uses pointers to B, it does not need to know the size)
Q2. Also, you can write "using A::B" and then, use "B" as usual.
是的,是的。否则,这应该很难编译。
Yes and yes. Otherwise, this should be hard to compile.