我有这些文件(简化版)
A.H
class A
{
public:
A(int){}
int operator [](int a){return a;}
};
A a(2);
的main.cpp
#include<a.h>
class B
{
public:
B(int){}
};
B b(a[2]);
int main()
{
//use b here...
}
问:我可以使用上面的代码吗?这是正确的吗?!
答案 0 :(得分:0)
上面的代码(差不多)编译,但它可能没有达到你所期望的效果。几个问题。 。
#include<a.h>
可能应为#include "a.h"
。
B b(a[2])
可能会创建A类的新实例,而不是使用您在a.h中定义的实例。在使用extern A a;
之前添加a
,告诉编译器您要使用在另一个文件中声明的a
。
最后,根据您的应用程序,有时候全局变量可能不受欢迎。如果合适,请考虑使用封装而不是全局变量。像
这样的东西Class B {
public:
B(int i){}
private:
A a(); // Or extern A a;
};
如果你只需要从b访问a。