The “invalid use of void expression” error occurs in C/C++ when we try to assign a call to a void function to a variable. It also occurs when a void function is cast to another data type.
In the following code, the function f()
has a void
return type. This function is passed as an argument to the function g()
, which expects an int
as its argument. C++ tries to cast the void return type of the function f()
to an integer
, which causes the “invalid use of void expression” error.
#include <iostream>using namespace std;void f(){cout<<"Hello World"<<endl;}int g(int k){return (k+5);}int main(){int x = g(f());cout<<x<<endl;}
The solution is to avoid casting void return types to any other data type. Since the function g()
can only accept an integer
data type, we should only pass it data of integer
data type.
#include <iostream>using namespace std;void f(){cout<<"Hello World"<<endl;}int g(int k){return (k+5);}int main(){f();int x = g(5);cout<<x<<endl;}
Free Resources