私は少し前にこれらの質問をしました: 基本クラスから異なる派生クラスへの多重継承キャスト
しかし、私はまだ答えを理解しているかどうかわかりません。問題は、以下のコードは有効ですか?
#include <iostream>
using namespace std;
struct Base
{
virtual void printName()
{
cout << "Base" << endl;
}
};
struct Interface
{
virtual void foo()
{
cout << "Foo function" << endl;
}
};
struct Derived : public Base, public Interface
{
virtual void printName()
{
cout << "Derived" << endl;
}
};
int main(int argc, const char * argv[])
{
Base *b = new Derived();
Interface *i = dynamic_cast<Interface*>(b);
i->foo();
return 0;
}
コードは私が望むように機能します。しかし、私が理解しているように、前の質問によれば、そうすべきではありません。したがって、そのようなコードが有効かどうかはわかりません。ありがとう!