Вопросы о строке и функциях. - PullRequest
3 голосов
/ 07 ноября 2011

Я играю в C ++, просто для удовольствия. Я только начал использовать функции и хочу сделать оператор if, который обращается к различным функциям, основываясь на том, пытается ли пользователь умножить на 1 или нет.

Вот код:

//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; 

}

Единственное, что происходит, это то, что он возвращает сообщение;

adrian @ adrian-HP-ProBook-4525s: ~ / Documents / code $ g ++ test10.cpp -o test test10.cpp: в функции int ans (): test10.cpp: 26: 10: ошибка: невозможно преобразовать ‘std :: string {aka std :: basic_string} 'в' int 'взамен

Это так странно, потому что, насколько я вижу, я не пытаюсь преобразовать это обратно, не так ли?

// Привет

Ответы [ 5 ]

6 голосов
/ 07 ноября 2011
   int ans(void)  
   ^^^^^

Вы пытаетесь вернуть s, что составляет std::string в теле функции, но ваша сигнатура функции говорит, что функция возвращает int. Таким образом, компилятор пытается преобразовать std::string в int, что является неправильным преобразованием и, следовательно, ошибкой.

Должно быть:

std::string ans(void)
^^^^^^^^^^^
3 голосов
/ 07 ноября 2011

Вот проблема:

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
}
3 голосов
/ 07 ноября 2011

int ans (...) возвращает s, которое является строкой

2 голосов
/ 07 ноября 2011

Вы возвращаете строку, тогда как возвращаемый тип функции - Integer

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

  string s = "Lol";

  return s; 
}
0 голосов
/ 07 ноября 2011

Вы также должны избегать использования глобальных переменных:

//Deklarerar variblar som jag ska använda
int a,b,x;
string s;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...