Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 输出错误(继承)_C++_Debugging - Fatal编程技术网

C++ 输出错误(继承)

C++ 输出错误(继承),c++,debugging,C++,Debugging,我试图使用继承运行程序,但在匹配所需输出时遇到问题。我将在下面发布所有内容 头文件: class Vehicle { public: virtual void accelerate() = 0; virtual void brake() = 0; virtual std::ostream& display(std::ostream& ostr) const =0; }; cla

我试图使用继承运行程序,但在匹配所需输出时遇到问题。我将在下面发布所有内容

头文件:

    class Vehicle {
    public:

            virtual void accelerate() = 0;
            virtual void brake() = 0;
            virtual std::ostream& display(std::ostream& ostr) const =0;

    };


class Car: public Vehicle {
            int speed_;
            int maxSpeed_;

    protected:
            void speed(int value);
            int maxSpeed() const;
    public:
            int speed() const;
            Car(int m = 100);

    };


    class SportCar: public Car{
            int noOfPassengers_;

    public:
            SportCar();
            SportCar(int speed, int pass);

            // implementations of Vehicle's pure virtual methods
            void accelerate();
            void brake();
            std::ostream& display(std::ostream& os) const;

    };

    class PickupTruck: public Car {
            int loadAmount_;
            char loadedMaterial_[31];

    public:
            PickupTruck();
            void load(const char* loadedMaterial, int loadAmount);
            void unload();
            bool isEmpty()const;

            // implementations of Vehicle's pure virtual methods
            void accelerate();
            void brake();
            std::ostream& display(std::ostream& os) const;
    };
CPP文件:

void Car::speed(int value) {
            speed_ = value;

            if (value > maxSpeed_ ) {
                    maxSpeed_ = value;
            }
            else if (value < 0) {
                    speed_ = 0;
            }
    }

    int Car::maxSpeed()const {
            return maxSpeed_;
    }

    int Car::speed() const {
            return speed_;
    }

    Car::Car(int m) {
            maxSpeed_ = m;
            speed_ = 0;

    }





    SportCar::SportCar() {
            noOfPassengers_ = 1;
    }

    SportCar::SportCar(int speed, int pass): Car(speed) {

            noOfPassengers_ = pass;
    }

    void SportCar::accelerate() {
            speed(speed() + 40);
    }

    void SportCar::brake() {
            speed(speed() - 10);
    }

    std::ostream& SportCar::display(std::ostream& os) const {
            if (speed() > 0) {
                    os << "This sport car is carrying" << noOfPassengers_ << "passengers and is traveling at a speed of " << speed() << "km/h";
            }
            else {
                    os << "This sport car is carrying" << noOfPassengers_ << "passengers and is parked";
            }
            return os;
    }



    PickupTruck::PickupTruck() {
            loadAmount_ = 0;
            loadedMaterial_[0] = char(0);
    }
    bool PickupTruck::isEmpty()const {
            return loadAmount_ == 0;
    }
    void PickupTruck::load(const char* loadedMaterial, int loadAmount) {
            std::strcpy(loadedMaterial_, loadedMaterial);
            loadAmount_ = loadAmount;
    }
    void PickupTruck::accelerate() {
            speed(speed() + 20);
    }
    void PickupTruck::brake()
    {
            speed(speed() - 5);
    }
    void PickupTruck::unload() {
            loadAmount_ = 0;
    }
    std::ostream& PickupTruck::display(std::ostream& os) const
    {
            os << "This pickup truck is ";
            if (isEmpty()) {
                    os << "not carrying any load";
            }
            else {
                    os << "carrying " << loadAmount_ << " kgs of " << loadedMaterial_;
            }
            if (speed() > 0) {
                    os << ", traveling at the speed of " << speed() << " km/h.";
            }
            else {
                    os << " and is parked.";
            }
            return os;
    }
void Car::速度(int值){
速度=数值;
如果(值>最大速度){
最大速度=数值;
}
else if(值<0){
速度=0;
}
}
int Car::maxSpeed()常量{
返回最大速度;
}
int Car::speed()常量{
返回速度;
}
汽车:汽车(整数米){
最大速度=m;
速度=0;
}
跑车::跑车(){
无乘客=1;
}
跑车::跑车(整速,整速):赛车(速度){
无乘客通行证;
}
void SportCar::accelerate(){
速度(速度()+40);
}
void跑车::制动器(){
速度(速度()-10);
}
标准::ostream&SportCar::显示(标准::ostream&os)常数{
如果(速度()>0){

os这些函数不输出新行:

void drive(Car& cDrive)
{
    cDrive.accelerate();
    cDrive.brake();
    cDrive.display(cout);    //< Should also write endl
}

void stop(Car& cStop)
{
    if (cStop.speed() > 0) {
        cStop.brake();
    }
    cStop.display(cout);    //< Should also write endl
}
void drive(汽车和cDrive)
{
cDrive.accelerate();
驱动制动器();
cDrive.display(cout);//<还应写入endl
}
无效停止(轿厢和cStop)
{
如果(cStop.speed()>0){
cStop.brake();
}
cStop.display(cout);//<还应写入endl
}

您可以看到。

这些函数没有输出新行:

void drive(Car& cDrive)
{
    cDrive.accelerate();
    cDrive.brake();
    cDrive.display(cout);    //< Should also write endl
}

void stop(Car& cStop)
{
    if (cStop.speed() > 0) {
        cStop.brake();
    }
    cStop.display(cout);    //< Should also write endl
}
void drive(汽车和cDrive)
{
cDrive.accelerate();
驱动制动器();
cDrive.display(cout);//<还应写入endl
}
无效停止(轿厢和cStop)
{
如果(cStop.speed()>0){
cStop.brake();
}
cStop.display(cout);//<还应写入endl
}

您可以看到。

您确定运行的是最新编译版本吗?跑车代码中的
km/h
后没有句号。但是在“您的输出”中,有一个。我看不出代码有任何错误。如果ostream是通过引用传递并通过引用返回的,那么这应该可以正确地用
endl
终止每一行。是的,我使用的是g++compielrI,我不明白是什么让它在正确的输出后在字符串上运行,也许这与newlineIn行有关输出的第5条:输出应该是:这辆跑车载着2名乘客,并且停着。但输出是:这辆跑车载着2名乘客,以20公里/小时的速度行驶。你确定你运行的是最新编译版本吗?在你的跑车代码中,
km/h
后没有完全停止。但是在“你的产出",有一个。我看不出代码有任何错误。如果ostream是通过引用传递并通过引用返回的,那么这应该可以正确地用
endl
终止每一行。是的,我使用的是g++compielrI,我不明白是什么让它在正确的输出后在字符串上运行,也许这与newlineIn行有关输出的第5条:输出应该是:这辆跑车载着2名乘客,并且停着。但是你的输出是:这辆跑车载着2名乘客,以20公里/小时的速度行驶。啊好的,我去了cpp文件,把新行放在显示屏后面().我现在收到的错误是:在输出的第5行中:输出应该是:这辆跑车载着2名乘客,并且停着。但是你的输出是:这辆跑车载着2名乘客,以20公里/小时的速度行驶。拜托,你现在把StackOverflow当作一种调试服务。很容易看出
刹车
的作用es不会将速度设置为零。我建议你花一点时间自己思考。突然出现了一个新问题。因此,好好想想。看看你的代码。使用调试器。所有这些都会帮助你成为一名更好的程序员。如果(cStop.speed()>0){cStop.brake();}我该如何设置brake()到0了吗?啊,好的,我去了cpp文件,把换行符放在显示屏后面().我现在收到的错误是:在输出的第5行中:输出应该是:这辆跑车载着2名乘客,并且停着。但是你的输出是:这辆跑车载着2名乘客,以20公里/小时的速度行驶。拜托,你现在把StackOverflow当作一种调试服务。很容易看出
刹车
的作用es不会将速度设置为零。我建议你花一点时间自己思考。突然出现了一个新问题。因此,好好想想。看看你的代码。使用调试器。所有这些都会帮助你成为一名更好的程序员。如果(cStop.speed()>0){cStop.brake();}我如何将brake()设置为0?