我是C ++的新手,我目前正在学习无效功能。 我正在尝试使用void函数编写一个对数字进行正方形的函数。这是我的代码。
#include "std_lib_facilities.h"
void square(int);
int main()
{
int x = 0;
cout << "Please enter a number. It will be squared.";
cin >> x;
cout << x << 't' << square(x);
}
void square(int x)
{
int y = x*x;
cout << y;
}
IDE给我的错误是:
no match for 'operator<<' (operand types that are 'std::basic_ostream<char>'
and 'void')
根据经验,很多人会询问头文件std_lib_facilities.h
,这不是问题。我可以这么说,因为我使用这个头文件进行了很多练习,但它们都有效。
提前感谢您的帮助!
答案 0 :(得分:3)
void函数不能直接返回值。大多数人会使用非void函数来实现平方,如下所示:
int square(int x)
{
return x * x;
}
我看到你的square
函数将平方值写入std::cout
本身。这很奇怪,但是如果你真的想这样做,你应该用main
函数替换最后一行:
cout << x << 't';
square(x);
通常不能在表达式中使用void函数的结果,这是原始代码的问题。
答案 1 :(得分:0)
square()
无效 - 即它不会返回任何内容。
cout << x << 't' << square(x);
尝试打印square()
的返回值(我们已经说过它不存在)。这没有任何意义,所以编译器抱怨。
你想要做的是让square
返回一个int而不是打印它。
int square(int x)
{
return x*x;
}
答案 2 :(得分:0)
我想改变返回类型会使错误消失。编译器错误是因为没有重载版本的&lt;&lt;它将void作为参数,因为你的函数(错误地)告诉编译器。