0

私は次のようなクラスを持っています:

class VectorAttrIterator : public AttrIterator {
    vector<AttrValue>* values;
    vector<AttrValue>::iterator it;
public:
    VectorAttrIterator(vector<AttrValue>* _values) : values(_values) {
        it = (*values).begin();
    };

    bool hasNext() {
        return it != (*values).end();
    };

    AttrValue next() {
        int ret = (*it);
        it++;
        return ret;
    };

    ~VectorAttrIterator() {
        delete values;
    };
};

できます。次に、次のようなことをしたいと思いましたunordered_set:

class UnorderedSetAttrIterator : public AttrIterator {
    unordered_set<AttrValue>* values;
    unordered_set<AttrValue>::iterator it;
public:
    UnorderedSetAttrIterator(vector<AttrValue>* _values) : values(_values) {
        it = (*values).begin();
    };

    bool hasNext() {
        return it != (*values).end();
    };

    AttrValue next() {
        int ret = (*it);
        it++;
        return ret;
    };

    ~UnorderedSetAttrIterator() {
        delete values;
    };
};

唯一の変更点はvectorunordered_setクラスの名前変更です。しかし、次のようなエラーが発生します。

Error   42  error C2065: 'values' : undeclared identifier   h:\dropbox\sch\cs3202\code\source\includes\iterator.h   40
Error   43  error C2228: left of '.begin' must have class/struct/union  h:\dropbox\sch\cs3202\code\source\includes\iterator.h   40
Error   44  error C2440: 'initializing' : cannot convert from 'std::vector<_Ty> *' to 'std::tr1::unordered_set<_Kty> *' h:\dropbox\sch\cs3202\code\source\includes\iterator.h   39
Error   45  error C2439: 'UnorderedSetAttrIterator::values' : member could not be initialized   h:\dropbox\sch\cs3202\code\source\includes\iterator.h   39
Error   46  error C2065: 'it' : undeclared identifier   h:\dropbox\sch\cs3202\code\source\includes\iterator.h   44
Error   47  error C2065: 'values' : undeclared identifier   h:\dropbox\sch\cs3202\code\source\includes\iterator.h   44
Error   48  error C2228: left of '.end' must have class/struct/union    h:\dropbox\sch\cs3202\code\source\includes\iterator.h   44
Error   49  error C2065: 'it' : undeclared identifier   h:\dropbox\sch\cs3202\code\source\includes\iterator.h   48
Error   50  error C2065: 'it' : undeclared identifier   h:\dropbox\sch\cs3202\code\source\includes\iterator.h   49
Error   51  error C2065: 'values' : undeclared identifier   h:\dropbox\sch\cs3202\code\source\includes\iterator.h   54

どうしたの?値が宣言されていないのはなぜですか? 完全なソース

4

1 に答える 1

1

この行はこの問題のようです:

UnorderedSetAttrIterator(vector<AttrValue>* _values) : values(_values) {

vectorパラメータ タイプを からに変更するのを忘れていunordered_setませんか?

于 2013-03-29T13:54:46.590 に答える