0

このような動物と犬の2つのクラスがあるとしましょう。

class Animal
{

};

class Dog : public Animal
{

};

また、animal という名前の動物オブジェクトがあります。これは実際には dog のインスタンスですが、どうすればそれを dog にキャストできますか? これは奇妙な質問のように思えるかもしれませんが、プログラミング言語インタープリターを作成していて、すべてが BaseObject としてスタックに格納され、他のすべてのデータ型が BaseObject を拡張しているため、必要です。ベースオブジェクトをスタックから特定のデータ型にキャストするにはどうすればよいですか? 私はこのようなことを試しました

Dog dog = static_cast<Dog>(animal);

しかし、それは私にエラーを与えます

1>------ Build started: Project: StackTests, Configuration: Debug Win32 ------
1>  StackTests.cpp
1>c:\users\owner\documents\visual studio 2012\projects\stacktests\stacktests\stacktests.cpp(173): error C2440: 'static_cast' : cannot convert from 'Animal' to 'Dog'
1>          No constructor could take the source type, or constructor overload resolution was ambiguous
1>c:\users\owner\documents\visual studio 2012\projects\stacktests\stacktests\stacktests.cpp(173): error C2512: 'Dog' : no appropriate default constructor available
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

編集:代わりにポインターを使用することにしました。

4

1 に答える 1