如何从main访问test.a?
这是我的代码:
myfile1.cpp:
#include "myfile2.h"
int main()
{
test.a=1; //this gives error "incomplete type is not allowed"
}
myfile2.h:
class abc;
abc test;
myfile2.cpp:
#include "myfile2.h"
class abc{
public:
int a;
abc():
a(0){}
} test;
答案 0 :(得分:1)
您不能定义不完整类型的变量,但您可以声明一个。如果您不想公开类定义,那么您无法访问定义类的翻译单元之外的类成员,因此您还需要提供访问者。这是一种可能的方法:
<强> header.h:强>
class abc; // declares the name "abc"
extern abc test; // declares the name "test"
void set_a(abc & obj, int val); // declares the name "set_a"
<强> impl.cpp:强>
#include "header.h"
class abc { /* definition */ };
abc test;
void set_a(abc & obj, int val) { obj.a = val; }
<强> main.cpp中:强>
#include "header.h"
int main()
{
set_a(test, 1);
}