带有vector <int>成员的基类

时间:2017-06-14 04:59:09

标签: c++ visual-studio-2010 vector

我试图创建一个抽象基类,我打算派生类来实现vector<int>成员。我的问题是如果我尝试这样做:

class BaseClass
{
public:
    virtual int GetCount() = 0;
    virtual vector<int> ChildData;
}

class CID1 : public BaseClass
{
public:
    int GetCount()
    {
        return 3;
    }

    //and so on.....
}

我得到了

  1. &#39;虚拟&#39;数据声明不允许
  2. &#39;虚拟&#39;是不允许的。
  3. 我想做的是:

    1. 让我的子类重写向量,因为它们将包含不同数量的向量元素
    2. 能够遍历包含已声明子类的地址的BaseClass*数组,以及向量数据的第二个循环。
    3. 我是以正确的方式做到的吗?提前谢谢!

      注意:我以前没有使用C ++进行编码的经验。

1 个答案:

答案 0 :(得分:2)

  

我是以正确的方式做到的吗?

没有

正如编译器告诉您的那样,您可以拥有virtual个成员函数,但不能拥有virtual成员变量。

将成员变量更改为成员函数,并确保在派生类中正确实现它们。

class BaseClass
{
   public:
      virtual int GetCount() = 0;
      virtual vector<int>& GetChildData() = 0;
}

class CID1 : public BaseClass
{
   public:

      // virtual keyword is not necessary here
      // but helps with understanding code.
      virtual int GetCount()
      {
         return 3;
      }

      virtual vector<int>& GetChildData()
      {
         return data;
      }

   private:
      vector<int> data;

}