Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将所有类的对象从第三个类更改为_C++_Pointers - Fatal编程技术网

C++ 将所有类的对象从第三个类更改为

C++ 将所有类的对象从第三个类更改为,c++,pointers,C++,Pointers,我在执行以下操作时遇到一些问题,当我从另一个类(Starter.h)更改第一个对象之一中的第三个对象时,我有两个对象(Class1.h和Class2.h)的实例,第三个对象作为变量(Obj.h),我希望这种变化会出现在另一个对象中。我用指针来做这件事。例如: Main.cpp Class1* c1 = new Class1; Class2* c2 = new Class2; int main(int argc, char **argv) { printf("Teste!");

我在执行以下操作时遇到一些问题,当我从另一个类(
Starter.h
)更改第一个对象之一中的第三个对象时,我有两个对象(
Class1.h
Class2.h
)的实例,第三个对象作为变量(
Obj.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

现在,您正在主方法中调用类启动器的默认构造函数:

Starter s;
因此,在Starter的这个实例中,obj将是未初始化的。将此更改为调用正确的构造函数:

Starter s(c1);
但是,您的Starter类目前缺少一个用于其Class1实例变量的访问器方法。因此,即使调用正确的构造函数,也无法访问Class1 intance c1中的obj实例。尝试将Class1*getClass1()添加到初学者类中,您应该已经准备好了


但是,您的示例还存在一些其他问题:
-Starter的默认构造函数将其实例变量保持未初始化状态。这将产生未定义的行为。
-尝试习惯C++初始化列表语法(参见)
-尝试修复变量名

是什么让您认为自己无法从
Starter
执行此操作?当你尝试时会发生什么?如何?它不起作用了。。。我又试了一次,成功了,泰