c++ - 派生类中指向基类的指针 vector

标签 c++ vector multiple-inheritance derived-class

我正在编写一个应用程序,其中我将通过指向基类的指针访问多个派生类。我希望这些派生类之一在应用程序中包含它的邻居(也是基类类型)的指针 vector ,如下所示:

    #include <vector>

    class BaseClass
    {
    public:
        BaseClass() { }
        virtual ~BaseClass() { }
    };

    class DerivedClass : virtual public BaseClass
    {
    public:
        DerivedClass() : BaseClass() { }
        ~DerivedClass() { }
    private:
        vector<BaseClass*> Neighbors;
    };

但是,得到如下编译错误:

example.cpp:16: error: ISO C++ forbids declaration of ‘vector’ with no type
example.cpp:16: error: expected ‘;’ before ‘<’ token

这可能吗?如果可能的话请有人指出我的错误!编译器应该知道 BaseClass 是什么类型,因为它刚刚被声明,实际上声明类型 BaseClass Foo; 的成员有效,所以我不明白为什么 vector 不能识别 BaseClass*。

干杯!

最佳答案

你也没有输入 using namespace std; , using std::vector , 或 std::vector<...>...

#include <vector>
using std::vector; //choice 1
using namespace std; //choice 2 

class BaseClass
{
public:
    BaseClass() { }
    virtual ~BaseClass() { }
};

class DerivedClass : virtual public BaseClass
{
public:
    DerivedClass() : BaseClass() { }
    ~DerivedClass() { }
private:
    std::vector<BaseClass*> Neighbors; //choice 3
};

关于c++ - 派生类中指向基类的指针 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10269487/

相关文章:

快速排序算法抛出堆栈转储错误的 C++ 运行时错误

c++ - 我应该在返回 std::vector 的函数上使用 std::move 吗?

C++:wchar_t 不能作为键或值存储在 std::map 中

C++,使用其指针修改 vector 元素

c++ - 函数返回另一个函数的返回值

c++ - 具有虚拟多重继承的构造函数定义

inheritance - 多重继承什么时候派上用场?

c++ - 不能在 Xcode 中使用 _strdate (c++)

python - 在 Python 中使用 super() 进行 DRY

c++ - 帮助缓存局部化的载体吗? (C++)