我正在将我的Java程序翻译为C++。我在尝试以与Java中相同的方式使用多态性时遇到了问题。
我的代码看起来像这样:
class Base
{
public:
virtual void print() = 0;
};
class Derived_1 : public Base
{
public:
void print()
{
std::cout << "1" << std::endl;
}
};
class Derived_2 : public Base
{
public:
void print()
{
std::cout << "2" << std::endl;
}
};
Run Code Online (Sandbox Code Playgroud)
接下来是我尝试过的主要方法的两个版本,都给我编译器错误:
1:
int main(int argc, char const *argv[])
{
std::vector<Base> v;
v.push_back(Derived_1());
v.push_back(Derived_2());
for(Base i: v)
{
i.print();
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误:
object of …Run Code Online (Sandbox Code Playgroud)