-3

すみません、コードを忘れました

これが間違ったコードです。これを機能させようとしていますが、すべての論理演算子が機能しません。

#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

4 に答える 4

2

29行目でmain.cpp実行しようとしていrepeatnum > 0repeatnum、オーバーロードされていないタイプであるためoperator >です。

于 2012-07-10T05:56:44.403 に答える
0

repeatnum与えられた情報から、変数は直接比較するために使用できないクラスまたは構造体のオブジェクトであると推測できます0。の型が定義されている場合は、オーバーロードして適切に処理repeatnumするメンバー関数を追加します。operator >

class YourType
{
    // Class definition
public:
    int operator >( int var )
    {
       // Code for comparison
       // return result
    }
};
于 2012-07-10T06:45:00.787 に答える
0

今コードを見た後。repeatnum は文字列です。文字列への入力を読み取り、それを整数と比較します。現在、文字列には整数に対して operator>-defined が定義されていないため、比較する前に文字列を整数に変換する必要があります。

atoi(repeatnum.c_str());

または、stringstream を使用して実行します。

于 2012-07-10T05:56:44.610 に答える