小编Fab*_*izo的帖子

如何使用抽象类作为foreach循环的索引变量的类型?

我正在将我的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)

c++ polymorphism abstract-class pointers class

1
推荐指数
1
解决办法
115
查看次数

标签 统计

abstract-class ×1

c++ ×1

class ×1

pointers ×1

polymorphism ×1