我收到错误:
没有操作员" []"匹配这些操作数
对于这一行:
cout << A[j].display(n)
但是当我拿出[j]
时,我收到错误:
class&#34; list&#34;没有会员&#34;显示&#34;
这是我的代码:
class list
{
protected:
int *p; // pointer to a list
int size; // dimension
public:
list(int x)
{
size = x;
p = new int[size];
}
void get(int i, int val)
{
p[i] = val;
}
};
class dlist : public list
{
public:
int display(int i)
{
return p[i];
}
};
int main()
{
int n;
cout << "Enter elements in a row\n";
cin >> n;
list A(n);
int j, val;
for (j = 0; j < n; j++)
{
cin >> val;
A.get(j, val);
}
cout << "\n";
cout << "List of elements are :\n";
cout << "----------------------\n";
for (j = 0; j < n; j++)
cout << A[j].display(j) << "\t";
cout << "\n";
return 0;
}
请帮忙!
答案 0 :(得分:1)
类list
确实没有成员函数display
。声明为
dlist
class dlist : public list
//...
有这样的成员函数。但是,对象A
在main中定义为类list
list A(n);
此外,您无法创建dlist
类型的对象,因为您必须明确定义该类型的构造函数。
如果你想使用多态,那么引入虚函数,例如成员函数display
就像虚拟一样。
此语法
cout << A[j].display(j) << "\t";
^^^^^^^^^^^^^^
不正确,因为对象A
是标量对象。它不是一个对象数组,并且该类没有重载operator []
。
您应该首先明确定义一个虚拟析构函数(否则程序中可能存在内存泄漏),使用参数,复制构造函数和类列表中的复制赋值运算符删除构造函数中动态分配的内存。然后你可以定义下标运算符等等。