我已經編寫了一個包裝類來對類型向量執行插入/刪除操作。 代碼:檢索C++向量中的第一個元素
class GenericSymbolTable {
public:
virtual void pushBackAtom(Atom *atom) = 0;
virtual Atom* peekAtom(void) = 0;
virtual Atom* getAtom(void) = 0;
protected:
~GenericSymbolTable(void){}
};
class SymbolTable : public GenericSymbolTable {
private:
vector<Atom*> atoms;
protected:
~SymbolTable(void);
public:
void pushBackAtom(Atom *atom);
Atom* peekAtom(void);
Atom* getAtom(void);
};
當寫爲這些方法編譯器會引發衝突的類型錯誤的實現:
Atom* SymbolTable::peekAtom(void) {
if(atoms.empty()) {
cout << "\t[W] Simbol table does not contain any atoms" << endl;
return NULL;
}
Atom* first = atoms.begin(); // <== type error
return first;
}
Atom* SymbolTable::getAtom(void) {
if(atoms.empty()) {
cout << "\t[W] Simbol table does not contain any atoms" << endl;
return NULL;
}
Atom* first = atoms.begin(); // <== type error
atoms.erase(atoms.begin());
return first;
}
錯誤消息: 不能轉換「的std ::矢量:迭代{又名__gnu_cxx: :__ normal_iterator>}」到 '在初始化原子*'
迭代器可以並且很可能不是指針類型。 – Xeo