我在执行以下操作时遇到一些问题,我有 2 个对象(Class1.h
和 Class2.h
的实例),第三个对象作为变量(实例Obj.h
),当我更改其他类(Starter.h
)中第一个对象之一中的第三个对象时,我希望该更改将显示为 int另一个对象。我正在使用指针来做到这一点。例如:
Main.cpp
Class1* c1 = new Class1;
Class2* c2 = new Class2;
int main(int argc, char **argv)
{
printf("Teste!");
Obj* obj = new Obj();
obj->setX(4);
c1->setObj(obj);
c2->setObj(obj);
Starter s;
printf("C
最佳答案
现在,您正在 main 方法中调用 Starter 类的默认构造函数:
Starter s;
因此在 Starter 的这个实例中,obj 将未被初始化。更改此设置以调用正确的构造函数:
Starter s(c1);
但是,您的 Starter 类目前缺少其 Class1 实例变量的访问器方法。因此,即使您调用正确的构造函数,您也无法访问 Class1 实例 c1 内的 obj 实例。尝试将 Class1* getClass1() 添加到您的 Starter 类中,您就可以开始了。
但是,您的示例还存在一些其他问题:
- Starter 的默认构造函数未初始化其实例变量。这将产生未定义的行为。
- 尝试习惯 C++ 初始值设定项列表语法(请参阅 http://www.learncpp.com/cpp-tutorial/101-constructor-initialization-lists/ )
- 尝试修复你的变量名称
关于c++ - 从第三类更改所有类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27473350/