2012-02-23 76 views
2

我需要一些幫助,這種類型不匹配怎麼可能? 當我替換所有內容時,它的類型完全相同,包括 常量。C++中奇怪的類型不匹配

cgVertex3D.cpp:33: error: no matching function for call to 
std::vector<Polygon3D*, std::allocator<Polygon3D*> >::push_back(const Polygon3D*&) 

/usr/include/c++/4.4/bits/stl_vector.h:733: 
note: candidates are: 

void std::vector<_Tp, _Alloc>::push_back(const _Tp&) 
[with _Tp = Polygon3D*, _Alloc = std::allocator<Polygon3D*>] 
<near match>  
+1

你是否傳遞了一個值,或許(而不是指針)?向我們展示代碼。 – 2012-02-23 11:40:02

+2

看起來像你試圖將一個const *推到一個非const指針的向量上 – kfmfe04 2012-02-23 11:41:19

+0

你能告訴我們代碼嗎?編譯器不認爲它是完全相同的類型,包括常量;它認爲你正在將一個指向const的指針推到一個指向nonconst的指針上。 – 2012-02-23 11:45:46

回答

6

_Tpconst,在這種情況下_Tp是一個指針。所以const _Tp的替代實際上將導致Polygon3D *const,而不是const Polygon3D *,因此不匹配。

+0

修復它,謝謝 – 2012-02-23 12:02:11

+0

@MatthiasHueser然後你應該接受答案。 – 2012-02-23 13:35:47