私は次のようなクラスを持っています:
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;
};
};
唯一の変更点はvector
、unordered_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
どうしたの?値が宣言されていないのはなぜですか? 完全なソース