从第三个类更改所有类的对象

时间:2014-12-14 19:50:48

标签: c++ pointers

我在执行以下操作时遇到一些麻烦,我有2个对象(Class1.hClass2.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

1 个答案:

答案 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/
  - 尝试修复变量名称