C++;参数化构造函数错误 我正在编写一个代码,用于使用一个参数化构造函数创建一个简单的C++类。我的代码如下: #include <iostream> using namespace std; class CC{ public: double h[]; double t[]; int tsize; CC(double rs[], double ts[], int l){ for (int k = 0;k < l;k++){ t[k] = ts[k]; h[k] = rs[k]; }; tsize = l; }; }; int main(int argc, char const *argv[]) { double r[] = {1,4,9}; double tm[] = {1,2,3}; int s = 3; CC CC1(r,tm,s); cout<<CC1.h[0]<<CC1.h[1]<<CC1.h[2]<<endl; cout<<CC1.t[0]<<CC1.t[1]<<CC1.t[2]<<endl; };
而它本应该是C++;参数化构造函数错误 我正在编写一个代码,用于使用一个参数化构造函数创建一个简单的C++类。我的代码如下: #include <iostream> using namespace std; class CC{ public: double h[]; double t[]; int tsize; CC(double rs[], double ts[], int l){ for (int k = 0;k < l;k++){ t[k] = ts[k]; h[k] = rs[k]; }; tsize = l; }; }; int main(int argc, char const *argv[]) { double r[] = {1,4,9}; double tm[] = {1,2,3}; int s = 3; CC CC1(r,tm,s); cout<<CC1.h[0]<<CC1.h[1]<<CC1.h[2]<<endl; cout<<CC1.t[0]<<CC1.t[1]<<CC1.t[2]<<endl; };,c++,class,constructor,C++,Class,Constructor,而它本应该是 149 123 有谁能告诉我我到底做错了什么吗?在类定义中,双h[]是一个错误。必须将数组的边界指定为类定义的一部分,例如: double h[5]; 然后在构造函数中检查您是否没有收到l>5。(顺便说一句,不要使用l作为变量名,它看起来太像1)。您的编译器应该对此给出一个错误 如果在编译时不知道数组的大小,那么就不能使用C样式的数组。而是使用C++风格的数组;这些被称为向量: vector<double> h, t; 好处:如果传递的是实际数组(不是指针),则
149
123
有谁能告诉我我到底做错了什么吗?在类定义中,
双h[]代码>是一个错误。必须将数组的边界指定为类定义的一部分,例如:
double h[5];
然后在构造函数中检查您是否没有收到l>5
。(顺便说一句,不要使用l
作为变量名,它看起来太像1
)。您的编译器应该对此给出一个错误
如果在编译时不知道数组的大小,那么就不能使用C样式的数组。而是使用C++风格的数组;这些被称为向量:
vector<double> h, t;
好处:如果传递的是实际数组(不是指针),则可以从传入的数组推断长度:
您可以将此构造函数替换为另一个构造函数,也可以将其添加到另一个构造函数中。在类定义中,double h[]代码>是一个错误。必须将数组的边界指定为类定义的一部分,例如:
double h[5];
然后在构造函数中检查您是否没有收到l>5
。(顺便说一句,不要使用l
作为变量名,它看起来太像1
)。您的编译器应该对此给出一个错误
如果在编译时不知道数组的大小,那么就不能使用C样式的数组。而是使用C++风格的数组;这些被称为向量:
vector<double> h, t;
好处:如果传递的是实际数组(不是指针),则可以从传入的数组推断长度:
您可以将此构造函数替换为另一个构造函数,也可以将其添加到另一个构造函数中。在类定义中,double h[]代码>是一个错误。必须将数组的边界指定为类定义的一部分,例如:
double h[5];
然后在构造函数中检查您是否没有收到l>5
。(顺便说一句,不要使用l
作为变量名,它看起来太像1
)。您的编译器应该对此给出一个错误
如果在编译时不知道数组的大小,那么就不能使用C样式的数组。而是使用C++风格的数组;这些被称为向量:
vector<double> h, t;
好处:如果传递的是实际数组(不是指针),则可以从传入的数组推断长度:
您可以将此构造函数替换为另一个构造函数,也可以将其添加到另一个构造函数中。在类定义中,double h[]代码>是一个错误。必须将数组的边界指定为类定义的一部分,例如:
double h[5];
然后在构造函数中检查您是否没有收到l>5
。(顺便说一句,不要使用l
作为变量名,它看起来太像1
)。您的编译器应该对此给出一个错误
如果在编译时不知道数组的大小,那么就不能使用C样式的数组。而是使用C++风格的数组;这些被称为向量:
vector<double> h, t;
好处:如果传递的是实际数组(不是指针),则可以从传入的数组推断长度:
您可以使用此构造函数来代替另一个构造函数,也可以将其添加到另一个构造函数中。为什么要使用代码> >每个代码> } /CUT>?这会有什么区别吗?“参数化构造函数”是什么意思?我指的是不能编译为标准C++(至少C++ 11)的意思。如果您使用的是GCC,请添加-std=c++11-pedantic
(将c++11替换为您的目标版本)。您需要为您的成员变量分配内存。为什么有代码> >每个代码> } /CUT>?这会有什么区别吗?“参数化构造函数”是什么意思?我指的是不能编译为标准C++(至少C++ 11)的意思。如果您使用的是GCC,请添加-std=c++11-pedantic
(将c++11替换为您的目标版本)。您需要为您的成员变量分配内存。为什么有代码> >每个代码> } /CUT>?这会有什么区别吗?“参数化构造函数”是什么意思?我指的是不能编译为标准C++(至少C++ 11)的意思。如果您使用的是GCC,请添加-std=c++11-pedantic
(将c++11替换为您的目标版本)。您需要为您的成员变量分配内存。为什么有代码> >每个代码> } /CUT>?这会有什么区别吗?“参数化构造函数”是什么意思?我指的是不能编译为标准C++(至少C++ 11)的意思。如果您使用的是GCC,请添加-std=c++11-pedantic
(将c++11替换为您的目标版本)。您需要为您的成员变量分配内存。