我无法访问存储在STL list
中的类的成员函数。我的代码如下:
typedef Shape* shapePtr;
list <shapePtr> shapeList;
//skip alot...
case x:
{
cout << "Enter the height \n";
cin >> height;
cout << "Enter the base \n";
cin >> base;
//computation.
shapeList.push_back(new Triangle);
shapeList->setHeight(height);
shapeList->setBase(base);
break;
}
这导致g ++出现以下错误:
< - >'&gt;'的操作数具有非指针类型错误:'* shapeList'中的'operator *'不匹配
case x:
{
cout << "Enter the height \n";
cin >> height;
cout << "Enter the base \n";
cin >> base;
//computation.
shapeList.push_back(new Triangle);
(*shapeList).setHeight(height);
(*shapeList).setBase(base);
break;
}
导致以下错误:
错误:'* shapeList'中的'operator *'不匹配
答案 0 :(得分:3)
shapeList
指的是整个列表。如果您想要列表的最后一个元素,请使用shapeList.back()
,它返回对最后一个元素的引用(在这种情况下为shapePtr&
)。
但是,因为看起来你正在调用特定于Triangle
实例的方法(我假设它是Shape
的子类),所以你不能直接与{{1因为shapeList.back()
没有这些方法。您需要做的是将Shape
实例的分配与将其添加到Triangle
分开。分配shapeList
并将其存储在本地变量中。然后,您可以将其添加到该列表中,并通过该局部变量在其上调用Triangle
和setHeight
。