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
执行此操作?当你尝试时会发生什么?如何?它不起作用了。。。我又试了一次,成功了,泰