类中的嵌套类或结构

时间:2011-09-14 09:50:03

标签: c++ nested-class

代码优先:

//。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前面。)

3 个答案:

答案 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)

是的,是的。否则,这应该很难编译。