Java プログラマーであり、C++ 初心者でもある私は、C++ で継承を扱うのに苦労しています。今、私はこれを持っています:
class Parent {
public:
Parent() {}
virtual std::string overrideThis() { }
};
class Child : public Parent {
public:
std::string attribute;
Child(const std::string& attribute) : attribute(attribute) { }
std::string overrideThis(){
std::cout << "I'm in the child" << std::endl;
return attribute.substr(1, attribute.size()-2);
}
};
そして、このスニペットは別の場所にあります:
Child *child = new Child(value);
Child childObject = *(child);
std::cout << "I'm trying this: " << childObject.overrideThis() << endl;
上記のコードは、メッセージが画面に出力されると期待どおりに機能します。しかし、その代わりにこれを試してみると:
Child *child = new Child(value);
Parent childObject = *(child);
std::cout << "I'm trying this: " << childObject.overrideThis() << endl;
画面に面白い文字がたくさん表示されて面白いランタイム エラーが発生します。ポインタでポリモーフィズムを使用する適切な方法は何ですか? 私がやろうとしているのは、Child
インスタンスで overrideThis() を呼び出すことです