2015-04-04 33 views
-1

我似乎有一個奇怪的問題,即我的項目無法編譯。從我可以看到它似乎是一個名稱空間問題,我想使用std::iterator。但是,從錯誤的角度來看,它們似乎源於其提振對手。我沒有使用using's,我包含正確的文件,但stl &增強的某些文件名使用相同的名稱。我不確定這是否會造成一些含糊不清。爲什麼VC++編譯器使用boost range iterator.hpp

我使用在這種情況下唯一的升壓文件/algorithm/string.hpp

下面是使用迭代器

std::map <ObjIndex, unsigned int> normalModelIndexMap; 
std::map <unsigned int, unsigned int> indexMap; 

for (unsigned int i = 0; i < indexCount; i++) 
{ 
    ObjIndex* currIndex = &ObjIndices[i]; 

    unsigned int iNormalModelIndex, iResultModelIndex, iPrevVertexLocation; 

    vec3 currPos = vertexList[currIndex->index_Vertex]; 
    vec2 currTxrPos = vec2(0, 0); 
    vec3 currNormal = vec3(0, 0, 0); 

    if (hasUVs) 
     currTxrPos = uvList[currIndex->index_UV]; 

    if (hasNormals) 
     currNormal = normalsList[currIndex->index_Normal]; 

    std::map<ObjIndex, unsigned int>::iterator it = normalModelIndexMap.find(*currIndex); 

而就在這裏建的是輸出日誌文件.cpp中唯一的代碼。

ObjLoader.cpp 1> F:\ dev的\升壓\ boost_1_57_0 \升壓\範圍\ iterator.hpp(69):錯誤C2039: '類型':不是 「升壓的成員:: mpl :: eval_if_c,boost :: range_mutable_iterator>' 1> f:\ dev \ boost \ boost_1_57_0 \ boost \ range \ value_type.hpp(26): 請參閱參考類模板實例 正在編譯'boost :: range_iterator' 1> 1>
[1> T = CHAR 1> 1>
F:\ gl_projects \ opengl_engine \ opengl_engine \ opengl_engine \源\發動機\ UTIL \ objloader.cpp(197) :見參考類臨時延遲實例化 正在編譯'boost :: range_value' 1> f:\ dev \ boost \ boost_1_57_0 \ boost \ range \ iterator.hpp(69):錯誤C2146: 語法錯誤:缺少';'在標識符'type'之前 1> f:\ dev \ boost \ boost_1_57_0 \ boost \ range \ iterator.hpp(69):error C4430: 缺少類型說明符 - 假定爲int。注意:C++不支持 default-int 1> f:\ dev \ boost \ boost_1_57_0 \ boost \ range \ iterator.hpp(69): 錯誤C2602:'boost :: range_iterator :: type'不是成員 'boost :: range_iterator'1>的基類1>
[1> T = char 1>] 1>
f:\ dev \ boost \ boost_1_57_0 \ boost \ range \ iterator.hpp(69) :見 聲明'boost :: range_iterator :: type'1>與 1> [1> T = char 1>] 1> f:\ dev \ boost \ boost_1_57_0 \ boost \ range \ iterator.hpp(69 ):錯誤C2868: 'boost :: range_iterator :: type': 使用聲明的非法語法;預期的限定名稱1> 1>
[1> T = char 1>] 1> c:\ program files (x86)\ microsoft visual studio 12.0 \ vc \ include \ xutility(371):error C2825: '_Iter':後跟'::'必須是類或名稱空間1> f:\ dev \ boost \ boost_1_57_0 \ boost \ iterator \ iterator_traits.hpp(22):請參閱 對類模板實例化的引用 'std :: iterator_traits正在編譯1> 1>
.......... ==========重建所有:0成功,1失敗,0跳過===== =====

這很可能是我疏忽/做某事愚蠢。不過,不勝感激任何幫助提高速度的幫助。

+0

爲什麼你downvoting? – XapaJIaMnu 2015-04-04 14:32:13

+0

始終通過查看所看到的第一個錯誤的原因進行調試。 這是違者本條線。什麼東西在那裏? 'f:\ gl_projects \ opengl_engine \ opengl_engine \ opengl_engine \ source \ engine \ util \ objloader.cpp(197)' – inetknght 2015-04-04 14:35:41

+1

@XapaJIaMnu:我想這是因爲缺乏[mcve](http://stackoverflow.com/幫助/ MCVE)。 – 2015-04-04 14:36:29

回答

0

感謝您的幫助,但我發現了這個問題。它實際上與包含無關,而且與objloader.cpp中的迭代器無關。我發現問題是在boost :: split()中,我通過了一個字符'c'而不是字符串元素「c」....

相關問題