class classa {
public:
virtual void foo();
};
class classb : public classa {
public:
virtual void foo() override;
};
void classa::foo()
{
std::cout << "foo from a" << std::endl;
}
void classb::foo()
{
std::cout << "foo from b" << std::endl;
}
int main()
{
std::vector<classa> stuff;
classa a;
classb b;
stuff.push_back(a);
stuff.push_back(b);
stuff[0].foo();
stuff[1].foo();
return 0;
}
上記のコードが返されることを期待していました
foo from a
foo from b
しかし、両方を として返しますfoo from a
。
これはベクトルが格納されているためだと思いますがclassa
、よくわかりません。どうすればclassb:foo()
から呼び出されるようになりb
ますか?