我在做什么错误的这个C ++代码?

时间:2012-07-10 05:53:29

标签: c++

抱歉,忘记了代码

这是错误的代码。 我一直试图让这个工作,但所有逻辑运算符都不起作用。

#include <iostream>
#include <string>
using namespace std;
string repeat;
string repeatnum;
string prompt = "|-[]->";
int main()
{
string entry;
bool Running = true;
while(Running == true)
{
cout << "\n";
cout << prompt;
cin >> entry;
if(entry == "Exit") return 0;
if(entry == "Help") cout << "HELP:\nThsi is a simple program, try an input";
if(entry == "ChangePrompt")
{
    cout << "What do you want to change the prompt to?: ";
    cin >> prompt;
}
if(entry == "Repeat" || "repeat")
{
    cout << "What string do you want to repeat?: ";
    cin >> repeat;
    cout << "How many times do you want to repeat" << repeat << "(1-9)?: ";
    cin >> repeatnum;
    if(repeatnum > 0){}
}
}
char f;
cin >> f;
return 0;
}

这是我得到的错误。

Error:
C:\Users\Packard Bell\Desktop\test\main.cpp||In function 'int main()':|
C:\Users\Packard Bell\Desktop\test\main.cpp|29|error: no match for 'operator>' in 'repeatnum > 0'|
||=== Build finished: 1 errors, 0 warnings ===|

4 个答案:

答案 0 :(得分:2)

因为在main.cpp的第29行,您尝试执行repeatnum > 0repeatnum是一种没有超载operator >的类型。

答案 1 :(得分:1)

除了repeatnum问题,这段代码没有做你想做的事情

if(entry == "Repeat" || "repeat")

应该是

if(entry == "Repeat" || entry == "repeat")

答案 2 :(得分:0)

现在看到代码之后。 repeatnum是一个字符串。您读取字符串的输入,然后将其与整数进行比较。现在string没有运算符&gt; -defined for integer,所以你需要在比较之前将字符串转换为整数。

atoi(repeatnum.c_str());

或者使用stringstream来完成它。

答案 3 :(得分:0)

根据给定的信息,我只能猜测变量repeatnum是一个类或结构的对象,您无法直接将其与0进行比较。如果您定义了repeatnum的类型,请添加一个重载operator >的成员函数并正确处理它。

class YourType
{
    // Class definition
public:
    int operator >( int var )
    {
       // Code for comparison
       // return result
    }
};