C++ 初始化向量以包含13个元素
我试图初始化向量,使其在类构造函数中包含13个元素 因为在下面的例子中,编译器给出了“语法错误:'常量'”C++ 初始化向量以包含13个元素,c++,managed-c++,C++,Managed C++,我试图初始化向量,使其在类构造函数中包含13个元素 因为在下面的例子中,编译器给出了“语法错误:'常量'” #包括 使用名称空间系统; 公共引用类MyClass{ 公众: 向量vector1D(13);//语法错误:“常量” 向量向量2d(13,向量(13)); }) 那么如何在构造函数中初始化向量以包含13个元素?您需要在构造函数中执行此操作: class MyClass { public : vector<int> vector1D; vector< ve
#包括
使用名称空间系统;
公共引用类MyClass{
公众:
向量vector1D(13);//语法错误:“常量”
向量向量2d(13,向量(13));
})
那么如何在构造函数中初始化向量以包含13个元素?您需要在构造函数中执行此操作:
class MyClass {
public :
vector<int> vector1D;
vector< vector<int> > vector2D;
MyClass()
{
vector1D = vector<int>(13);
vector2D = vector< vector<int> > (13, vector<int>(13));
}
};
class-MyClass{
公众:
向量向量1d;
向量<向量>向量2D;
MyClass()
{
向量1d=向量(13);
vector2D=向量<向量>(13,向量(13));
}
};
您不能在构造函数中为13个元素预留空间。用于此。非静态成员必须在构造函数定义中初始化,而不是在成员声明中初始化:
class MyClass {
public :
vector<int> vector1D;
vector<vector<int>> vector2D;
MyClass() :
vector1D(13),
vector2D(13,vector<int>(13))
{}
};
class-MyClass{
公众:
向量向量1d;
矢量2D;
MyClass():
矢量1D(13),
向量2D(13,向量(13))
{}
};
如果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);
}
};
#使用
#包括
使用名称空间系统;
公共引用类MyClass{
公众:
cli::数组^vector1D;
cli::数组^vector2D;
MyClass()
{
数组::调整大小(向量1d,13);
数组::调整大小(矢量2D,13);
对于每个(矢量2D中的cli::array^项)
数组::调整大小(第13项);
}
};
您可以对其进行初始化,使其在构造函数中包含13个元素。谢谢您的澄清。是的,如果你在施工时知道13个元素是什么。我在OP的代码中看不到这一点。OP的代码试图用13个值初始化的值来初始化它,使用的构造函数正是这样做的。唯一的问题是它需要在构造函数定义中完成,而不是在成员声明中。在这种情况下,它可能不是合适的语法。编译器给出了一个新错误:MyClass:不支持混合类型supported@eliz我猜这和管理C++有关,我对此一无所知。这就是如何在标准C++中初始化它们的方法;根据Diabulicus的回答,您可能需要使用一些奇怪的非标准数组类型,而不是vector
。无论如何,我会将类更改为不使用arrayArray是可以的,但它必须是这里的vector,然后MyClass
不能是ref
。
#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);
}
};