c++对象数组初始化

class Circle{
    double adius;
}

不支持这两种写法啊:

    Cricle cs[] = { 1.0, 2.0, 3.0 }
    auto cs = new Circle[]{ 1.0, 2.0, 3.0 }
阅读 3.9k
2 个回答

1.C++成员默认是private,所以不能通过这两种方式来初始化。有两种方式修改:

  • 改为public
class Circle {
    public:
        double adius;
};
  • 定义一个构造函数,编译器可以隐式转换:
class Circle {
double adius;

public:
    Circle(double adius) {
        this->adius = adius;
    }
};

2.c++ new数组是需要传入长度的,所以你第二种方式要改一下:

auto cs = new Circle[3]{1.0, 2.0, 3.0};

在mac -- clion -- g++9

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题