2017-04-12 77 views
-2

我是C++新手,目前我正在学习void函数。 我正在尝试使用void函数编写一个方形数字的函数。这是我的代码。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,这是没有问题的。我可以这么说,因为我使用这个头文件进行了很多练习,并且他们都工作了。

非常感谢您的帮助!

+1

您正试图打印调用该函数的结果。 – chris

回答

3

void函数不能直接返回值。大多数人会使用非空函数来实现平方,像这样:

int square(int x) 
{ 
    return x * x; 
} 

我看到你的square函数的平方值写入std::cout本身。这是奇怪的,但如果你真的想这样做的,则应更换main功能与最后一行:

cout << x << 't'; 
square(x); 

不能通常使用void函数的结果的表达式,它是您的原始代码的问题。

0

square()是无效的 - 即它不返回任何东西。

cout << x << 't' << square(x);尝试打印返回值square()(我们已经说过,它不存在)。这是没有道理的,所以编译器会抱怨。

你想要做的就是让square返回一个int而不是打印它。

int square(int x) 
{ 
    return x*x; 
} 
0

我猜想改变返回类型会使错误消失。编译器错误是因为没有过载版本的< <它将void作为参数,因为你的函数是(错误地)告诉编译器。