更改变量类型

时间:2015-06-29 19:56:36

标签: c++ class variables

我是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 *'在任务中

我在这里搜索了很多,而且在谷歌但我找不到任何东西,有人能帮助我吗?非常感谢你

1 个答案:

答案 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;

希望这有帮助!