我是C ++的新手,我来自Ruby,在那里我可以声明一个变量并设置我想要的东西,例如一个类
@variable=MyClass.new
可以在C ++中做类似的事吗?我有两个类和一个用第一个集声明的全局变量,我想修改它并将它设置为第二个类,在Ruby中我可以做类似的事情
@variable=MyClass2.new
我的c ++代码是这样的:
TestClass1 *scene = NULL;
*scene=TestClass1();
现在我尝试像在Ruby中一样将它设置为第二个类: TestClass2 * newScene = NULL
*newScene=TestClass2()
*scene=*newScene();
错误:无法转换' TestClass1 *'到' TestClass2 *'在任务中
我在这里搜索了很多,而且在谷歌但我找不到任何东西,有人能帮助我吗?非常感谢你
答案 0 :(得分:0)
要直接解决问题,您无法执行此操作的原因是(我从您的错误消息中推断)您定义的两个class
不共享父级。例如:
class TestScene1
{
// some code
};
class TestScene2
{
// some code
};
因为它们是两个完全独立的class
,所以它们不可互换,并且在C ++中,一旦变量被声明,它的类型就不能改变。也就是说,如果这两种类型共享一个共同的父母,那么你的作业是可能的,虽然结果可能不是你在功能上想做的。
class SceneParent
{
// some code
};
class TestScene1 : public SceneParent
{
// some code
};
class TestScene2 : public SceneParent
{
// some code
};
这可以解决您的错误,但可能无法满足您的计划需求。您可以从用户在评论中发布的资源或this link中找到有关继承(以及整个C ++)的更多信息。
为了澄清,您的作业看起来像这样(与您发布的内容略有不同):
TestScene1* scene = nullptr; // new C++ standards advise using nullptr over NULL
scene = new TestScene1();
TestScene2* newScene = nullptr;
newScene = new TestScene2();
scene = newScene;
希望这有帮助!