0

我正在使用 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 中构建。

4

1 回答 1

1

vector<T>::iterator是依赖类型,所以你需要使用typename

typename vector<T>::iterator pt;

请参阅我必须在何处以及为什么必须放置“模板”和“类型名称”关键字?

于 2013-01-31T16:39:33.617 回答