我刚刚在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;
}
main()的cout语句在输出和人类之间有错误
答案 0 :(得分:3)
将功能更改为
char const *isWeak(){
return " Weak";
}
char const *isStrong(){
return " Strong";
}
按照目前的定义,这两个函数都有void
返回类型,这意味着main中的cout
语句正在尝试打印void
,这是没有意义的,并且是原因错误。
答案 1 :(得分:2)
您正在尝试打印void
:
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;
答案 2 :(得分:1)
您正试图在cout << "Human is " << human.isWeak() << endl;
您需要更改isWeak
和isStrong
功能才能返回std::string
/ const char*
或更改您调用它们的方式:
到字符串:
const char* isWeak() {
return " Weak";
}
// then you can do
cout << "Human is " << human.isWeak() << endl;
或者改变你调用函数的方式:
cout << "Human is ";
human.isWeak();
您的isWeak
和isStrong
函数是void
他们没有返回任何内容;调用cout << human.isWeak()
期望isWeak
返回一些东西(int,string,double等)。
答案 3 :(得分:1)
问题在于isWeak()和isStrong()返回类型。这两个函数返回void并且您正在尝试打印它。你可以试试这个 -
cout << "Human is " ;
human.isWeak();
cout << endl;
cout << "Human 2 is " ;
human2.isStrong();
cout << endl;