我有这些文件(简体版)
A.H
class A
{
public:
A(int){}
int operator [](int a){return a;}
};
A a(2);
主.cpp
#include<a.h>
class B
{
public:
B(int){}
};
B b(a[2]);
int main()
{
//use b here...
}
问:我可以使用上面的代码吗?正确吗?!
上面的
代码(几乎)可以编译,但它可能不会达到您的预期。几个问题 . . .
如果 a.h 与 main.cpp 位于同一目录中,则可能应该
#include "a.h"
#include<a.h>
。B b(a[2])
可能会创建类 A 的新实例,而不是使用您在 a.h. Addextern A a;
中定义的实例,然后再使用a
告诉编译器要使用另一个文件中声明的a
。
最后,根据您的应用程序,有时全局变量可能会不受欢迎。如果合适,请考虑使用封装而不是全局变量。类似的东西
Class B {
public:
B(int i){}
private:
A a(); // Or extern A a;
};
如果您只需要从 b 访问 a,则可以工作。