我有一個包含FieldBase類型的對象的向量。我正在嘗試搜索具有特定名稱的FieldBase元素並將其返回。返回一個向量元素
,我發現了錯誤:
error C2664: 'FieldBase::FieldBase(const FieldBase &)' : cannot convert parameter 1 from 'FieldBase *' to 'const FieldBase &' 1>
Reason: cannot convert from 'FieldBase *' to 'const FieldBase' 1>
No constructor could take the source type, or constructor overload resolution was ambiguous
這裏是我FieldBase
類
class FieldBase {
public:
FieldBase();
CString name;
bool state;
int size;
CString getName();
void setName(CString name);
bool getState();
void setState(bool state);
int getSize();
void setSize(int size);
};
這是試圖返回對象的方法:
FieldBase GetField(CString name) {
vector<FieldBase*>::iterator it;
for (it = m_Message.begin(); it != m_Message.end(); ++it) {
if (name.Compare((*it)->getName()) == 0) {
break;
}
}
return *it;
}
也許另一個值得問的問題是(*it)->getName()
怎麼沒有編譯錯誤或者返回*it
呢?
因爲'* it'是一個指針,而不是一個值。 – quantdev 2014-12-03 01:07:15
也許是因爲'它'在堆棧上,並且不能作爲結果傳遞給調用函數。 – 2014-12-03 01:14:29