代码优先:
//。h file
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.我应该在struct B的定义之后放入makeB()函数吗?
2.在.cpp文件中,应该为每个B添加前缀A ::?
PS: 1.如果makeB函数不处理B实例,但B指针或引用,我可以在structB前面放一个struct B的前向decl吗? (我只是不想把结构B的定义放在mem-funcs前面。)
答案 0 :(得分:2)
编译好:
class A
{
public:
struct B;
A();
B makeB(int); //question 1
struct B {
int _id;
B(int id) {};
};
};
A::A() {}
A::B A::makeB(int id) //question 2
{ return B(id); }
答案 1 :(得分:1)
Q1。是的(它需要知道结构B的大小)
QPS1。是的(如果它只使用指向B的指针,则不需要知道大小)
Q2。此外,您可以编写“使用A :: B”然后像往常一样使用“B”。
答案 2 :(得分:0)
是的,是的。否则,这应该很难编译。