gpt4 book ai didi

c++ - 如何在C++中实现继承并解决错误 "parent class is not accessible base of child class"?

转载 作者:可可西里 更新时间:2023-11-01 18:11:07 27 4
gpt4 key购买 nike

我是 C++ 新手。我喜欢探索 C++ 中继承的概念。每当我尝试编译以下代码时,我都会收到错误消息:

for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
D:\C Practice Files\Vehicle.cpp: In function `int main()':
D:\C Practice Files\Vehicle.cpp:26: error: `void Vehicle::setStationary_state(bool)' is inaccessible
D:\C Practice Files\Vehicle.cpp:141: error: within this context
D:\C Practice Files\Vehicle.cpp:141: error: `Vehicle' is not an accessible base of `Ship'

Execution terminated

这是我的代码:

 #include <iostream.h>
#include <conio.h>
using std::string;

class Vehicle{

private:
bool stationary_state;
double max_speed;
double min_speed;
double weight;
double volume;
int expected_life;
string fuel_type;
string model;
string year_of_manufacture;

public:
Vehicle(){
}

void setStationary_state(bool m){
stationary_state = m;
}

bool getStationary_state(){
return stationary_state;
}
};


class Bike:Vehicle{
private:
string bike_type;

public:
void setBike_Type(string t){
type = t;
}
string getBike_Type(){
return bike_type;
}
};


class Aircraft:Vehicle{
private:
short no_of_wings;

public:
void setNo_of_wings(short wings)
{

no_of_wings = wings;
}

short getNo_of_wings()
{
return no_of_wings;
}
};



class Car:Vehicle{

private:
string reg_no;
string type;

public:
void setType(string t)
{

if ((t=="Pneumatic") || (t=="Hydraulic"))
{
type = t;
}
else
{
cout<<"\nInvalid entry. Please enter the correct type:";
setType(t);
}
}
};




class Ship:Vehicle{

private:
bool has_radar_detection;


public:
void setRadar_Detection(bool r){

has_radar_detection = r;
}

bool getRadar_Detection(){
return has_radar_detection;
}

};


int x;
main()
{
Vehicle v;

Bike b;

Car c;

Aircraft a;

Ship s;

s.setStationary_state(true);

c.setType("xyz");



/*v.setStationary_state(true);

if (!(v.getStationary_state()))
{
cout<<"Vehicle is moving";
}
else
{
cout<<"Vehicle is at rest";
}
*/

getch();
}

那里到底出了什么问题?错误的原因是什么以及如何避免它。请详细说明。

最佳答案

class 具有私有(private)默认继承,因此您需要指定 public,即

class Ship : public Vehicle { }:

等等。 struct 默认具有公共(public)继承。

关于c++ - 如何在C++中实现继承并解决错误 "parent class is not accessible base of child class"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9709899/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com