具有向量成员的基类<int>

Base class with a vector<int> member

本文关键字:lt int gt 基类 向量 成员      更新时间:2023-10-16

我正在尝试创建一个抽象基类,我希望派生类实现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. 数据声明上不允许使用"虚拟">
  2. 不允许使用"虚拟"。

我想做的是:

  1. 让我的子类覆盖向量,因为它们将包含不同数量的向量元素
  2. 能够遍历包含已声明子类地址的BaseClass*数组,以及向量数据的第二个循环。

我的做法是否正确?提前感谢!

注意:我之前没有C++编码的经验。

我的做法是否正确?

不。

正如编译器告知您的那样,您可以拥有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;
}