繁体   English   中英

基类构造函数上的分段错误

[英]Segmentation fault on base class constructor

创建Rectangle对象时,为什么会产生分段错误? 我认为我的构造函数有些不正确,但我在C ++中没有足够的经验来确定什么。

#include <string>
#include <map>

using namespace std;

class Shape {
private:
    string name;
    string property_name;
    map<string,double> parameters;


public:
    Shape(){
    }

    void set_name(string n){
        name=n;
    }

    string set_property_name(string s){
        property_name=s;
    }

    void set_parameter(string p, double n){
        parameters[p]=n;
    }

    double get_parameter(string p) {
        return parameters[p];
    }

    virtual double get_property() = 0;

};

class Shape2D: public Shape {
public:
    Shape2D() {
        set_property_name("area");
    }
};

class Rectangle: public Shape2D {
public:
    Rectangle() {
        set_name("rectangle");
        set_parameter("length",0);
        set_parameter("base",0);
    }

    double get_property() {
        return get_parameter("length") *   get_parameter("base");
    }
};


int main() {
  Shape * user_shape;
  user_shape=new Rectangle();
  return 0;
}

因为您的string set_property_name(string s)没有return并且是未定义的行为

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM