C++基本继承

C++ basic inheritance

本文关键字:继承 C++      更新时间:2023-10-16

在学习C++类 - 基本继承时,我的程序返回了一个错误:"C++禁止指针和整数之间的比较,C++禁止指针和整数之间的比较"。 我哪里做错了? 感谢您的帮助!:-)

#include <iostream>
using namespace std;
class Pizza
{ public: int slices; char topping[10]; bool pepperoni , cheese ; };
int main() {
// Make your own Pizza!
Pizza pizza;
cout << "n You can have Cheese or Pepperoni Pizza!";
cout << "n Type [cheese] or [pepperoni] n";
cin >> pizza.topping[10]; 
if (pizza.topping[10] == "pepperoni") { pizza.pepperoni = true;} 
if (pizza.pepperoni == true) {cout << "How many slices of pepperoni would you like?";};
if ( pizza.topping[10] == "cheese") { pizza.cheese = true;} 
if (pizza.cheese == true) {cout << "How many slices of cheese would you like?";};
cin >> pizza.slices; 
if (pizza.slices >= 1) {cout << "You ordered " << pizza.slices << " slices of " << pizza.topping[10] << " Pizza!"; }
else if (pizza.slices <= 0) {cout << "Change your mind?"; }
else { cout <<"Can't Decide? That's Okay.";}
 }

在这里:

 pizza.topping[10] == "pepperoni"

topping[10]char 型,而"pepperoni"是衰减到 const char* 的字符数组。您无法比较这两种类型。

如果你想将顶部的字符串与"意大利辣香肠"进行比较,那么你应该使用例如:

if (strcmp(pizza.topping, "pepperoni") == 0 ) {}

在C ++中,你应该使用std::string这将使你的生活更轻松。

顺便说一句,正如评论中所述,topping[10]是越界的,这是未定义的Behaiour,比编译错误更糟糕的事情。还要确保顶部的任何字符串都以"\0"字符结尾

感谢您的所有回复:-(程序有效!

// C++ Class - Basic Inheritance - User Inputs Values
#include <iostream>
using namespace std;
class Pizza
{ public: int slices; string topping; bool pepperoni=false,  cheese=false ; };
int main()
{
 // Make your own Pizza!
Pizza pizza;
cout << "n You can have Cheese or Pepperoni Pizza!";
cout << "n Type [cheese] or [pepperoni] n";
cin >> pizza.topping; 
if (pizza.topping == "pepperoni") { pizza.pepperoni = true;}
if (pizza.pepperoni == true) {cout << "How many slices of pepperoni would you like?";
cin >> pizza.slices; }
else if ( pizza.topping == "cheese") { pizza.cheese = true;}
if (pizza.cheese == true) {cout << "How many slices of cheese would you like?";
cin >> pizza.slices; }
if (pizza.slices >= 1) {cout << "You ordered " << pizza.slices << " slices of " << pizza.topping << " Pizza!"; }
else if (pizza.slices <= 0) {cout << "Change your mind?"; }
else { cout <<"Can't Decide? That's Okay.";}
}