我使用Visual Studio 2010C:錯誤C2784:「布爾的std ::操作<
struct SPoint
{
int id;
int X;
int Y;
};
////////////////
vector<SPoint> points;
vector<SPoint> chosen;
////////////////
void print_vect(const vector<SPoint> & vect)
{
for (int i = 0; i < vect.size(); ++i)
{
cout << vect[i].id << " (" << vect[i].X << "," << vect[i].Y << ")"<<endl;
}
cout << endl;
}
////////////////
print_vect(points);
編譯器顯示:
:1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm(4674): error C2784: 'bool std::operator <(const std::move_iterator<_RanIt> &,const std::move_iterator<_RanIt2> &)' : could not deduce template argument for 'const std::move_iterator<_RanIt> &' from 'SPoint'
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\iterator(371) : see declaration of 'std::operator <'
我在一個單獨的項目,這爲藍本
struct SPoint
{
int X;
int Y;
};
vector<SPoint> points;
vector<SPoint> selected;
void print_vector(const vector<SPoint> & points) {
for (int i = 0; i < points.size(); i++)
{
cout << '('<<points[i].X <<',' <<points[i].Y <<')'<< endl;
}
cout << endl;
}
int main()
{
SPoint temp = {0, 0};
for (int i = 0; i < 11;i++)
{
temp.X = i;
temp.Y = i;
points.push_back(temp);
}
for (int i = 5; i< 11;i++)
{
temp.X = i;
temp.Y = i;
selected.push_back(temp);
}
print_vector(points);
system ("pause");
return 0;
}
它完美地工作。 我試圖找到關於這個問題的東西。他們說,編譯器不能比較兩個對象。將「<」方法添加到您的班級。但我正在學習程序編程。 然後,我的試用示例工作。爲什麼和做什麼?
哪一行發生錯誤? – Mark
不能從'SPoint'推導出參數,聽起來像是誤解了'vector'。確保包含'',並在此之前完成某種使用形式。 –
chris
編譯好嗎? http://ideone.com/SxLmKd'bool std :: operator <'讓我不會向我們展示代碼,而在代碼中,你沒有向我們展示'''而不是'<<' 。 –