Seg*_*ult 1 c++ compiler-errors forward-declaration circular-reference
假设我有:
class B;
class A{
private:
B *b;
public:
bar(){ b->foo()};
foo();
}
class B{
private:
A *a;
public:
bar(){ a->foo();}
foo();
}
Run Code Online (Sandbox Code Playgroud)
编译时,这个文件给出了一个
错误"无效使用不完整类型struct B",
即使我已经向前声明了B类.据我所知,这是因为当我调用函数foo()时b,编译器仍然不知道存在这样的函数.我怎么解决这个问题?
Luc*_*ore 10
前向声明不提供实现细节.除了它存在的事实之外,我们B不知道A.
要解决此问题,请将声明与实现分开.
您还缺少方法的返回类型.
文件啊:
class B;
class A{
private:
B *b;
public:
void bar();
void foo();
};
Run Code Online (Sandbox Code Playgroud)
文件A.cpp:
#include "A.h"
#include "B.h"
void A::bar(){
b->foo();
}
Run Code Online (Sandbox Code Playgroud)
文件Bh:
class A;
class B{
private:
A *a;
public:
void bar();
void foo();
};
Run Code Online (Sandbox Code Playgroud)
文件B.cpp:
#include "B.h"
#include "A.h"
void B::bar(){
a->foo();
}
Run Code Online (Sandbox Code Playgroud)