C++&引用;“Foo类回程杆”;及;分类栏返回Foo“;可能的 是否可以定义C++类FO和Bar S.T. class Foo { Bar makeBar(); }; class Bar { Foo makeFoo(); };

C++&引用;“Foo类回程杆”;及;分类栏返回Foo“;可能的 是否可以定义C++类FO和Bar S.T. class Foo { Bar makeBar(); }; class Bar { Foo makeFoo(); };,c++,C++,? 谢谢 是的。你可以用一只手来做 例如,在Foo.h中添加: class Bar; class Foo { Bar makeBar(); }; 对。你可以用一只手来做 例如,在Foo.h中添加: class Bar; class Foo { Bar makeBar(); }; 是的,你只需要在顶部提出声明 class Foo; class Bar; class Foo { Bar makeBar(); }; class Bar { Foo makeFoo()

?


谢谢

是的。你可以用一只手来做

例如,在
Foo.h
中添加:

class Bar;

class Foo {
    Bar makeBar();
};

对。你可以用一只手来做

例如,在
Foo.h
中添加:

class Bar;

class Foo {
    Bar makeBar();
};

是的,你只需要在顶部提出声明

class Foo;
class Bar;

class Foo {
  Bar makeBar();
};

class Bar {
  Foo makeFoo();
};

是的,你只需要在顶部提出声明

class Foo;
class Bar;

class Foo {
  Bar makeBar();
};

class Bar {
  Foo makeFoo();
};

编译器如何知道Foo::makeBar()处的Bar有多大?在这一点上它不必知道。它只需要知道有可能返回一个。在这一点上,它然后构造Foo和Bar类,现在它知道它们有多大,并且-现在-当你调用这些方法时,它拥有它所需要的一切。很酷,不是为了函数声明@anon:它不需要知道,只要这仅仅是函数的声明。声明中的不完整类型是可以的。一旦开始定义函数,类型就必须完整。在这种情况下,这会强制执行类外函数定义。它不需要知道在声明时返回值有多大。编译器如何知道Foo::makeBar()处的Bar有多大?此时不必知道。它只需要知道有可能返回一个。在这一点上,它然后构造Foo和Bar类,现在它知道它们有多大,并且-现在-当你调用这些方法时,它拥有它所需要的一切。很酷,不是为了函数声明@anon:它不需要知道,只要这仅仅是函数的声明。声明中的不完整类型是可以的。一旦开始定义函数,类型就必须完整。在这种情况下,这会强制执行类外函数定义。它不需要知道在声明时返回值有多大。