我试图创建一个抽象基类,我打算派生类来实现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.....
}
我得到了
我想做的是:
BaseClass*
数组,以及向量数据的第二个循环。我是以正确的方式做到的吗?提前谢谢!
注意:我以前没有使用C ++进行编码的经验。
答案 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;
}