C++;“无操作员”<<&引用;匹配这些操作数(继承) 我刚刚在C++中启动了类继承。当我在做一个“测试”程序时,cout语句出现了一个错误。不知道如何修复它,如果您能回复,我们将不胜感激 #include <iostream> using namespace std; class Power{ public: void isWeak(){ cout << " Weak"<< endl; } void isStrong(){ cout << " Strong" << endl; } }; class Person:public Power{}; class Person2:public Power{}; int main(){ Person human; Person2 human2; cout << "Human is " << human.isWeak() << endl; //error cout << "Human 2 is " << human2.isStrong() << endl; //error system("pause"); return 0; } #包括 使用名称空间std; 阶级权力{ 公众: void是弱的(){ 不能

C++;“无操作员”<<&引用;匹配这些操作数(继承) 我刚刚在C++中启动了类继承。当我在做一个“测试”程序时,cout语句出现了一个错误。不知道如何修复它,如果您能回复,我们将不胜感激 #include <iostream> using namespace std; class Power{ public: void isWeak(){ cout << " Weak"<< endl; } void isStrong(){ cout << " Strong" << endl; } }; class Person:public Power{}; class Person2:public Power{}; int main(){ Person human; Person2 human2; cout << "Human is " << human.isWeak() << endl; //error cout << "Human 2 is " << human2.isStrong() << endl; //error system("pause"); return 0; } #包括 使用名称空间std; 阶级权力{ 公众: void是弱的(){ 不能,c++,class,inheritance,runtime-error,C++,Class,Inheritance,Runtime Error,将功能更改为 char const *isWeak(){ return " Weak"; } char const *isStrong(){ return " Strong"; } 按照目前的定义,这两个函数都有void返回类型,这意味着main中的cout语句试图打印void,这没有意义,是错误的原因。您试图在cout中“打印”一个“void”语句的问题在于isWeak()和isStrong()返回类型。这两个函数返回void,您正在尝试打印它。您可以尝试以下操作- cout

将功能更改为

char const *isWeak(){
    return " Weak";
}
char const *isStrong(){
    return " Strong";
}

按照目前的定义,这两个函数都有
void
返回类型,这意味着main中的
cout
语句试图打印
void
,这没有意义,是错误的原因。

您试图在
cout中“打印”一个“void”语句的问题在于isWeak()和isStrong()返回类型。这两个函数返回void,您正在尝试打印它。您可以尝试以下操作-

cout << "Human is " ;
human.isWeak();
cout << endl;

 cout << "Human 2 is " ;
 human2.isStrong();
cout << endl; 

cout您正试图打印一个
void

cout << "Human is " << human.isWeak() << endl;
或者,更改您的代码:

cout << "Human is ";
human.isWeak();
cout << endl;
cout << "Human 2 is ";
human2.isStrong();
cout << endl;

你能不能使用一个
void
表达式,就好像它有一个值一样谢谢你们的精彩回答。你们的大部分回答确实帮助我了解了更多关于这个程序和我的错误,所以谢谢。没有必要写
std::string(“很弱”)
等等。您可以直接返回文本,它将自动用于构造
std::string
@BrianBi True。为了清晰起见,我将它放在那里。生成的程序集是相同的。
cout << "Human is " << human.isWeak() << endl;
cout << "Human is " << void << endl;
class Power
{
public:
    std::string isWeak()
    {
        return std::string(" is weak");
    }

    std::string isStrong()
    {
        return std::string(" is strong");
    }
};
cout << "Human is ";
human.isWeak();
cout << endl;
cout << "Human 2 is ";
human2.isStrong();
cout << endl;