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)
相反,请注意,这不会调用您的构造函数,您可以随意删除该构造函数,而不必尝试修复编译错误。
不确定大小的数组是不完整的类型。不能有不完整类型的变量。因此,您的成员变量格式错误。数组变量(包括成员)必须具有编译时常数大小。
如果需要运行时大小的数组,则需要动态分配它。最简单的解决方案是使用std::vector。
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |