基于循环而不是使用抽象类的向量进行编译

时间:2016-07-08 13:45:51

标签: c++ c++11 ranged-loops

我有这段代码:

#include <iostream>
#include <string>
#include <vector>

class MyAbstract
{
    public:
    std::string id;

    virtual void doStuff() = 0;
    virtual ~MyAbstract() {}
};

int main()
{
    std::vector<MyAbstract> myList;

    for(auto item : myList)
    {
        //DoSomething
    }
}

但它没有用这个错误编译:

  

错误:无法分配抽象类型的对象&#39; MyAbstract&#39;

Visual Studio 2015错误:

  

无法实例化抽象类

以下是在线代码:http://cpp.sh/3etnq

我在这里想念的是什么?! 这有效:

for (auto it = myList.begin(); it != myList.end();)

0 个答案:

没有答案