簡體   English   中英

由於std :: pair而導致GCC(MoSync)中的C ++構建錯誤

[英]C++ build error in GCC (MoSync) due to std::pair

我正在使用MoSync IDE構建用於移動平台的C ++代碼。 最初,C ++代碼是由Visual Studio 2010單獨構建的,沒有任何問題。 但是,當我使用MoSync IDE重建C ++代碼時,它生成了一些錯誤消息。 我的C ++代碼使用STL庫,例如std :: pair和std :: vector類。 以下是在MoSync IDE中被編譯為錯誤的代碼。 MoSync使用GCC 3.4.6。 因此,我認為這是由GCC編譯器引起的。

template<typename T>
vector< pair<T, int> > histogram(const vector<T>& x, int numBins)
{
    T maxVal, minVal, range, delta, leftEdge, rightEdge;
    int i, dummyIdx;
    vector<T>::iterator pt;
    vector< pair<T, int> > counts(numBins, make_pair(T(), 0));
    vector<T> y(x);

//other code ...

}

錯誤消息是:

錯誤:預期的`;' 在“ pt”之前(第6行)

給定輸入向量x和numBins時,此模板函數計算直方圖,並返回“ counts”作為(bins,counts)對。 最初,我在Visual Studio 2010中編譯了此C ++代碼,沒有任何錯誤。 但是MoSync IDE中的GCC給了我這個錯誤消息。 因此,這讓我很困惑,為什么它不能在GCC中建立。

vector<T>::iterator是從屬類型,因此您需要使用typename

typename vector<T>::iterator pt;

請參閱在何處以及為什么必須在其中放置“模板”和“類型名”關鍵字?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM