2011-11-07 8 views
3

私はC++でいくつかのゲームを楽しんでいます。関数を使い始めたばかりですが、ユーザーが1を乗算しようとしているかどうかに基づいて異なる関数に進むif文を作成したいと考えています。ここで文字列と関数に関する質問。

は、コードは次のとおりです。

//Test för att se om jag förstår funktioner 

#include <iostream> 
#include <string> 

using namespace std; 

//Deklarerar variblar som jag ska använda 
int a,b,x; 
string s; 

//Skriver ut funktionen för att multiplicera 
int multi(int a, int b) 
{ 
    x = a * b; 

    return x; 
} 

int ans(void) 
{ 
    using std::string; 

    string s = "Lol"; 

    return s; 
} 

//Samlar in värde från användaren, skickar den till funtktionen "multi" som multiplicerar den, sedan skickar den tillbaks den till main via return. Main visar sedan 
//resultatet för användaren 

int main(void) 
{ 

    using std::cout; 
    using std::cin; 
    using std::string; 

    cout << "Ange ett nummber som du vill multiplicera: \n\n"; 
    cin >> a; 
    cout << "\n"; 
    cout << "Ange det andra nu: \n"; 
    cin >> b; 
    cout << "\n"; 


if(a == 1) 
{ 
    multi(a,b); 

    cout << "Svaret är: " << x << "\n"; 
} 
else 
{ 
    ans; 
    cout << s; 
} 

    return 0; 

} 

起こる唯一の事は、それがメッセージを返すということです。エイドリアン-HP-ProBook [email protected]

エイドリアン:〜/書類/コード$ G ++ test10.cpp -oテスト test10.cpp:機能には 'int型のANS()': test10.cpp:26:10:エラー: 'std :: string {aka std :: basic_string}'を 'int'に変換することはできません

私はそれを元に戻すことはできません。あなたは関数本体でstd::stringあるsが、あなたの関数を返すようにしようとしている

答えて

6
int ans(void) 
    ^^^^^ 

文字列にある

//よろしく

+0

ありがとう!完璧な答え! :-) –

3

int型のANS(...)戻っているの、署名は関数がintを返していることを示します。そのため、コンパイラはstd::stringintに変換しようとします。これは無効な変換であり、したがってエラーです。

それは次のようになります。ここでは

std::string ans(void) 
^^^^^^^^^^^ 
+2

それを宣言してみてください。ans(...) – leo

3

は問題です:

int ans(void) // The function is declared to return int 
{ 
    using std::string; 

    string s = "Lol"; 

    return s; // It tries to return s, which is a string 
} 
2

関数の戻り型は整数

また、あなたが持っている
int ans(void) 
{ 
    using std::string; 

    string s = "Lol"; 

    return s; 
} 
0

にあるのに対し、あなたは文字列を返していますグローバル変数を使用しないでください。

//Deklarerar variblar som jag ska använda 
int a,b,x; 
string s; 
+0

持っていますか?いいえ?はい。 –

+0

私は、必要でない場合には、それらを使用することは(まったく)良くないことを意味します。 –

関連する問題