不匹配'operator<'

时间:2012-12-03 22:06:25

标签: c++ operators

这可能是一个非常快速的修复,但我无法弄清楚为什么我会收到错误。

代码:

#include <iostream>
#include <queue>
#include <vector>
#include <iomanip>
#include <stdlib.h>
#include <time.h>

using namespace std;

int main(int argc, char *argv[]){

    srand ( time(NULL) );
    double randomNumber = (double)(rand() % 100) / 100;

    string numCars;

    cout << "\nPlease enter the number of cars going through the intersection:" << endl;
    cout << "->";
    getline (cin, numCars);

    for(double i=0; i<numCars; i++){
        cout << randomNumber << endl;
    }

}

错误是:

 traffic.cpp:80: error: no match for ‘operator<’ in ‘i < numCars’

3 个答案:

答案 0 :(得分:4)

numCars是一个字符串。它应该有整数类型(char,short,int,long)

答案 1 :(得分:2)

您无法将string与数值进行比较。将用户输入读入unsigned int。将您的代码更改为:

unsigned int numCars;
if( !(cin >> numCars) ) {
  // invalid user input, handle it
}

for( unsigned int i = 0 ; i < numCars; ++i ) {
  // ...
}

我还将i的数据类型从double更改为unsigned int。没有理由使用浮点数,除非某种程度的汽车可以通过该交叉点。

答案 2 :(得分:0)

您无法将字符串与整数进行比较,或者您必须为此定义运算符。 numCars应该是整数吗?