C ++在文件之间传递类实例

时间:2015-04-12 14:51:16

标签: c++ file class

如何从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;

1 个答案:

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