gpt4 book ai didi

C++父类(super class)和子类

转载 作者:行者123 更新时间:2023-11-28 02:10:33 25 4
gpt4 key购买 nike

现在它不打印 Bridge 类和子类 RailwayBridge 的所有变量,它只打印出 2 个变量,当我在 Bridge 的 const print 中输入第三个变量名称时,它什么也没有打印出来!修改后的代码在这里:

#include <iostream>
#include <conio.h>
#include <string>

using namespace std;

class Bridge
{
protected:
int height;
long payload;
string name;

public:
Bridge();
Bridge(int, long, string);
~Bridge() {
cout << "Message from the \"Bridge\" - destroyed!" << endl;
}

int GetHeight() const {
return height;
}

void SetHeight(int _height) {
height = _height;
}

long GetPayload() const {
return payload;
}

void SetPayload(long);

void SetName(string _name) {
name = _name;
}

std::string GetName() const {
return name;
}

void Print() const;
};


class RailwayBridge : public Bridge
{
private:
unsigned int SL;

public:
RailwayBridge():Bridge(), SL(0) {}
RailwayBridge(int, long, std::string, unsigned int);

virtual ~RailwayBridge() {
cout << endl << "Message from the \"RailwayBridge\" - destroyed!" << endl;
}

unsigned int GetSL() const {
return SL;
}

virtual void Print() const;
};



Bridge::Bridge() : height(0), payload(0), name("0")
{
}

Bridge::Bridge(int Pheight, long Ppayload, std::string Pname) : height(Pheight){
payload = Ppayload;
}
inline void Bridge::SetPayload(long _payload){
payload = _payload;
}

inline void Bridge::Print() const {
cout << "Height = " << height << ", Payload = " << payload << ", Name = " << name << endl;
}


RailwayBridge::RailwayBridge(int Pheight, long Ppayload, std::string Pname, unsigned int PSL) : Bridge(Pheight, Ppayload, Pname)
{
SL = PSL;
}

inline void RailwayBridge::Print() const {
Bridge::Print();
cout << ", SL = " << SL;
}



int main(void)
{
const int N = 3;

RailwayBridge *RWB1 = new RailwayBridge(12, 200, "RVans T", 0);
Bridge *RWB2 = new RailwayBridge(2,30, "Vansu Tilts", 3);

Bridge *Locations[N] = {
new Bridge(1,2, " akmens tilts "),
new RailwayBridge(3, 4, "Rail", 5),
new RailwayBridge(6, 7, "Rails", 8)
};

//clrscr();

cout << "lokaciju masivs: " << endl;
for(int i=0; i<N; i++) {
cout << (i+1) << ". ";
Locations[i]->Print();
cout << endl;
}

cout << endl << "Bridge lokacijas: " << endl;

RWB1->Print();
cout << endl << "Height = " << RWB1->GetHeight() << ".";
cout << endl << "SL = " << RWB1->GetSL() << "." << endl << endl;

for(int k=0; k<N; k++) {
delete Locations[k];
}
delete RWB1;
delete RWB2;

while (kbhit())
getch();

getch();


return 0;

}

最佳答案

在 RailwayBridge 的构造函数定义中,您忽略了将参数(我猜是桥梁的名称)传递给 Bridge 的构造函数。

您应该如下更改它。

RailwayBridge::RailwayBridge(int Pheight, long Ppayload, string s, unsigned int PSL) : Bridge(Pheight, Ppayload, s) {
SL = PSL;

关于C++父类(super class)和子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35886308/

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