我正在玩一些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;
}
唯一发生的事情是它返回消息;
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'作为回报
这太奇怪了,因为从我所能看到的一切,我并没有试图将它转换回来,是吗?
//此致
答案 0 :(得分:6)
int ans(void)
^^^^^
您正在尝试在函数体中返回s
std::string
,但您的函数签名表示函数返回int
。因此,编译器会尝试将std::string
转换为int
,这是无效的转换,因此也就是错误。
应该是:
std::string ans(void)
^^^^^^^^^^^
答案 1 :(得分:3)
int ans(...)返回s,这是一个字符串
答案 2 :(得分: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
}
答案 3 :(得分:2)
您正在返回一个字符串,而返回类型的函数是Integer
int ans(void)
{
using std::string;
string s = "Lol";
return s;
}
答案 4 :(得分:0)
你还要避免使用全局变量:
//Deklarerar variblar som jag ska använda
int a,b,x;
string s;