我正在尝试初始化向量,以便在类构造函数中包含13个元素。
因为在下面的例子中,编译器给出了“语法错误:'常量'”。
#include <vector>
using namespace System;
public ref class MyClass {
public :
vector<int> vector1D(13) ; // Syntax error : 'constant'
vector<vector<int>> vector2D(13,vector<int>(13)) ;
};
那么如何初始化向量以在构造函数中包含13个元素?
答案 0 :(得分:1)
非静态成员必须在构造函数定义中初始化,而不是成员声明:
class MyClass {
public :
vector<int> vector1D;
vector<vector<int>> vector2D;
MyClass() :
vector1D(13),
vector2D(13,vector<int>(13))
{}
};
答案 1 :(得分:0)
您需要在构造函数中执行此操作:
class MyClass {
public :
vector<int> vector1D;
vector< vector<int> > vector2D;
MyClass()
{
vector1D = vector<int>(13);
vector2D = vector< vector<int> > (13, vector<int>(13));
}
};
答案 2 :(得分:0)
您无法为构造函数中的13个元素保留空间。请使用vector::reserve。
答案 3 :(得分:0)
如果MyClass
是托管类,则它不能拥有非托管成员。
#using <mscorlib.dll>
#include <vector>
using namespace System;
public ref class MyClass {
public :
cli::array<int>^ vector1D;
cli::array<cli::array<int>^>^ vector2D;
MyClass()
{
Array::Resize(vector1D, 13);
Array::Resize(vector2D, 13);
for each (cli::array<int>^ item in vector2D)
Array::Resize(item, 13);
}
};