-1

いくつかのクラスと、各タイプのオブジェクトのいくつかを保持するいくつかのベクトルがあります。簡単にするために、1つだけ話します。ので、私は持っています:

class Multiple : public Question {
    public:
        //Member functions here
    private:
        int num_choices;
        string correct;
        vector<string> choices;
};

int points;また、いくつかのデータ メンバー 、 、int chapter;およびも継承しstring prompt;ます。

そのvector<Multiple> mcq;ため、クラスのいくつかのオブジェクトを保存する必要があります (動的に割り当てられません)。しかし、特定のインデックスでオブジェクトを削除できるようにする必要があります。試してみましたmcq.erase(index)が、Visual Studio 2012 を使用するとエラーが発生Error: no instance of overloaded function "std::vector<_Ty, _Alloc>::erase [with _Ty=Multiple, _Alloc = std::allocator<Multiple>]" matches the argument list argument types are: (int) object type is: std::vector<Multiple, std::allocator<Multiple>>し、その意味や修正方法がわかりません。

よろしくお願いします。

4

1 に答える 1

4

このeraseメソッドは、インデックスではなく反復子の位置を取ります。やったほうがいい:

mcq.erase(mcq.begin() + index)
于 2013-11-12T11:06:04.083 に答える