C++ 从向量中的向量中移除类的实例

C++ 从向量中的向量中移除类的实例,c++,vector,C++,Vector,这是我的班级: class item { private: std::string name; double price; int quantity; public: item(); void setName(std::string itemName); std::string getName(); void setPrice(double itemPrice); double getPrice(); void setQu

这是我的班级:

class item
{
private:
    std::string name;
    double price;
    int quantity;

public:
    item();
    void setName(std::string itemName);
    std::string getName();
    void setPrice(double itemPrice);
    double getPrice();
    void setQuantity(int itemQuantity);
    int getQuantity();
};
我创建了一个类,该类的私有成员为项目向量向量:

class list
{
private:
    std::vector<std::vector<item>> notepad;

public:
    bool isEmpty();
    void addList();
    void printLists(bool printTotalPrice);
    void addItem();
    void removeItem();
    void editItem();
    void importList(std::ifstream& iFile);
    void exportList(std::ofstream& oFile);
};

当我试图编译时,我在上面指出的位置得到一个错误。类似于“没有用于调用的匹配函数”。我肯定我在某个地方取消了引用。

notepad
是一个
std::vector
,但是
col
是一个
std::vector::iterator
,即它指的是一个
项
无法从
std::vector
中删除

您想从其直接容器中删除
,该容器是
,而不是
记事本

row->erase(col);

您的命名有点混乱,因为它使迭代器的当前项看起来像是“行”中的“列”。它不是,它是一个

记事本。erase需要std::vector::iterator而不是std::vector::iterator
isEmpty()==true
只是一个布尔表达式,您不想将其与
true
进行比较以确保它是真的吗?也就是说,有一个从1开始的循环,而不是从0开始。另外,为什么不用硬编码值替换用户输入,以提供一个简单的示例?
row->erase(col);