我正在编写一个小型生成器,它在一个树对象结构的单个cpp文件中输出c ++类(类的输出顺序由这个树给出,所以它是固定的。)
为了保持简单,我希望如果有办法将它全部保存在一个文件中。
问题是这些类有时会使用成员函数相互交互,并且前向声明无法正常工作。
示例:
#include <iostream>
using namespace std;
class B;
B* global_b=NULL;
class A;
A* global_a=NULL;
class A {
public:
A() {}
~A() {}
void accessB()
{
global_b->setValue(1);
}
int getValue()
{
return 2;
}
};
class B {
public:
B() : j(0) {}
~B(){}
void setValue(int i)
{
j = i + global_a->getValue();
}
int j;
};
int main()
{
global_b = new B();
global_a = new A();
global_a->accessB();
cout << "Hello world!" << endl;
return 0;
}
有任何建议/想法吗?谢谢。
答案 0 :(得分:1)
通常,你会这样做:
class A {
public:
A() {}
~A() {}
void accessB();
...
};
然后声明A和B之后的某处:
void A::accessB()
{
global_b->setValue(1);
}
答案 1 :(得分:0)
你的全球价值应该是阶级静态。
为了使声明正常工作,您应该指定没有任何内联函数的类。然后在文件中你可以写:
inline void B::setValue(int i)
{
j = i + A::global.getValue();
}