C++ C++;超类与子类

C++ C++;超类与子类,c++,inheritance,C++,Inheritance,现在它并没有打印所有的桥类和子类RailwayBridge的变量,它只打印出2个变量,当我为桥输入第三个变量名的常量print时,它什么也不打印!修改后的代码如下: #include <iostream> #include <conio.h> #include <string> using namespace std; class Bridge { protected: int height; long payload; strin

现在它并没有打印所有的桥类和子类RailwayBridge的变量,它只打印出2个变量,当我为桥输入第三个变量名的常量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;

 }
#包括
#包括
#包括
使用名称空间std;
班桥
{
受保护的:
内部高度;
长有效载荷;
字符串名;
公众:
桥();
桥接器(int、long、string);
~Bridge(){

cout在定义RailwayBridge的构造函数时,忽略了向bridge的构造函数传递一个参数(我猜是桥的名称)

您应该按以下方式更改它

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

}

在定义RailwayBridge的构造函数时,您忽略了向bridge的构造函数传递一个参数(我想是桥的名称)

您应该按以下方式更改它

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

}代码清理+一些注释

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

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;
        }

        string GetName() const {
            return name;
        }

        void Print() const;
};

//---------------------------------------------------------------------------

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

Bridge::Bridge(int Pheight, long Ppayload, string Pname) : height(Pheight) {
    payload = Ppayload;
}

inline void Bridge::SetPayload(long _payload) {
    payload = _payload;
}

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

//---------------------------------------------------------------------------

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

    public:
        RailwayBridge():Bridge(), SL(0) {} // ?? Constructor call other constructor?
        RailwayBridge(int, long, string, unsigned int);

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

        unsigned int GetSL() const {
            return SL;
        }

        virtual void Print() const;
};

//---------------------------------------------------------------------------

// There no constructor: Bridge(Pheight, Ppayload) as Bridge(int, long)
RailwayBridge::RailwayBridge(int Pheight, long Ppayload, string, unsigned int PSL) : Bridge(Pheight, Ppayload) { 
    SL = PSL;
}

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

//---------------------------------------------------------------------------

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

    RailwayBridge *RWB1 = new RailwayBridge(12);
    Bridge        *RWB2 = new RailwayBridge();

    Bridge *Locations[N] = {
        new Bridge(1,2, "akmens tilts"),
        new RailwayBridge(),
        new RailwayBridge(20)
    };

    clrscr();

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

    cout << endl << "Bridge loactions: " << 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 (khbit())
        getch();

    getch();
}
#包括
#包括
#包括
使用名称空间std;
//---------------------------------------------------------------------------
班桥
{
受保护的:
内部高度;
长有效载荷;
字符串名;
公众:
桥();
桥接器(int、long、string);
~Bridge(){

cout代码清理+一些注释

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

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;
        }

        string GetName() const {
            return name;
        }

        void Print() const;
};

//---------------------------------------------------------------------------

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

Bridge::Bridge(int Pheight, long Ppayload, string Pname) : height(Pheight) {
    payload = Ppayload;
}

inline void Bridge::SetPayload(long _payload) {
    payload = _payload;
}

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

//---------------------------------------------------------------------------

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

    public:
        RailwayBridge():Bridge(), SL(0) {} // ?? Constructor call other constructor?
        RailwayBridge(int, long, string, unsigned int);

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

        unsigned int GetSL() const {
            return SL;
        }

        virtual void Print() const;
};

//---------------------------------------------------------------------------

// There no constructor: Bridge(Pheight, Ppayload) as Bridge(int, long)
RailwayBridge::RailwayBridge(int Pheight, long Ppayload, string, unsigned int PSL) : Bridge(Pheight, Ppayload) { 
    SL = PSL;
}

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

//---------------------------------------------------------------------------

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

    RailwayBridge *RWB1 = new RailwayBridge(12);
    Bridge        *RWB2 = new RailwayBridge();

    Bridge *Locations[N] = {
        new Bridge(1,2, "akmens tilts"),
        new RailwayBridge(),
        new RailwayBridge(20)
    };

    clrscr();

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

    cout << endl << "Bridge loactions: " << 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 (khbit())
        getch();

    getch();
}
#包括
#包括
#包括
使用名称空间std;
//---------------------------------------------------------------------------
班桥
{
受保护的:
内部高度;
长有效载荷;
字符串名;
公众:
桥();
桥接器(int、long、string);
~Bridge(){

cout如果你想快速回复,你应该附加错误消息并指出它们出现的位置。如果你想快速回复,你应该附加错误消息并指出它们出现的位置。你的代码真的很有帮助,虽然我仍然需要更改一些内容才能使其工作,但现在它可以编译,但它只打印出前两个变量,高度和有效载荷,当我试图输入要打印的名称时,它只是忽略了您的代码真正有帮助的值,虽然我仍然需要更改一些内容才能使其工作,现在它编译了,但它只打印前两个变量,高度和有效载荷,当我试图输入要打印的名称时,它只是忽略了价值