有没有办法访问类外的变量?
class MyClass1
{
public:
int x;
};
class MyClass2
{
public:
int get_x()
{
//somehow access MyClass1's variable x without
//passing it as an argument and return it.
}
}
int main()
{
MyClass1 obj1;
obj1.x = 5;
MyClass2 obj2;
std::cout << obj2.get_x();
return 0;
}
让我不愿意将我的程序拆分成许多有组织的小类而不是一些杂乱的大类的主要原因之一是从一个类传递另一个类可能需要的每个变量的麻烦。能够访问变量而不必传递它们(并且如果发生变化则必须同时更新声明和定义)将非常方便,并且可以让我更模块化地编写代码。
对于我的问题的任何其他解决方案也将不胜感激,因为我怀疑尝试以这种方式访问变量可能存在危险。
最佳答案
您可以访问 MyClass1
的 x
的唯一方法是您拥有该类的实例,因为 x
不是静态
。
class MyClass2
{
public:
MyClass2(MyClass1* c1) : myC1(c1) {}
int get_x()
{
return myC1->x;
}
private:
MyClass1* myC1;
}
然后你可以这样使用
int main()
{
MyClass1 obj1;
obj.x = 5;
MyClass2 obj2{&obj1};
std::cout << obj2.get_x();
return 0;
}
关于c++ - 访问超出范围的变量而不传递它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32100937/