构造函数C ++中未定义大小的数组

Kiv*_*vis 2 c++ arrays constructor class

我试图找到一种在类中定义未知大小的数组并使用构造函数“填充”的方法。这是一个简单的示例,可让您大致了解我要做什么:

#include <iostream>
#include <vector>
using namespace std;

class MyClass{
public:
    string Name;
    double x[];
    double y[];

    MyClass(string aName, double aX, double aY){
        Name=aName;
        x[]=aX;
        y[]=aY;
    }

};

int main() {
  MyClass object1("Object1",{1.0,2.0,3.0},{4.0,5.0,6.0});
}
Run Code Online (Sandbox Code Playgroud)

显然,这里有很多错误,所以我不知道从哪里开始以及如何实现我的目标!

任何指导表示赞赏。

编辑

这是基于此问题答案的有效解决方案。感谢大家!

#include <iostream>
#include <vector>
using namespace std;

class MyClass{
public:
    string Name;
    double x[];
    double y[];

    MyClass(string aName, double aX, double aY){
        Name=aName;
        x[]=aX;
        y[]=aY;
    }

};

int main() {
  MyClass object1("Object1",{1.0,2.0,3.0},{4.0,5.0,6.0});
}
Run Code Online (Sandbox Code Playgroud)

Bat*_*eba 10

标准C ++不支持可变长度数组。

在你的情况std::vector<double> x;&C。实际上是直接替代品,当然如果您要写

MyClass object1{"Object1",{1.0,2.0,3.0},{4.0,5.0,6.0}};
Run Code Online (Sandbox Code Playgroud)

相反,请注意,这不会调用您的构造函数,您可以随意删除该构造函数,而不必尝试修复编译错误。


eer*_*ika 5

不确定大小的数组是不完整的类型。不能有不完整类型的变量。因此,您的成员变量格式错误。数组变量(包括成员)必须具有编译时常数大小。

如果需要运行时大小的数组,则需要动态分配它。最简单的解决方案是使用std::vector