我在执行以下操作时遇到一些麻烦,我有2个对象(Class1.h
和Class2.h
的实例),第三个对象作为变量(Obj.h
的实例),当我更改其他类(Starter.h
)中的第一个对象中的第三个对象,我希望该更改将出现在另一个对象中。我正在使用指针来做到这一点。例如:
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
答案 0 :(得分:2)
现在,您在main方法中调用类Starter的默认构造函数:
Starter s;
所以在这个Starter的例子中,obj将是未初始化的。更改此项以调用正确的构造函数:
Starter s(c1);
但是,您的Starter类目前缺少其Class1实例变量的访问器方法。因此,即使您调用正确的构造函数,也无法访问Class1 intance c1中的obj实例。尝试将Class1 * getClass1()添加到您的Starter类中,您应该准备好了。
然而你的例子还有其他几个问题:
- Starter的默认构造函数是将其实例变量保持为未初始化。这将产生不确定的行为
- 尝试习惯C ++初始化列表语法(参见http://www.learncpp.com/cpp-tutorial/101-constructor-initialization-lists/)
- 尝试修复变量名称