Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 初始化向量以包含13个元素_C++_Managed C++ - Fatal编程技术网

C++ 初始化向量以包含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

我试图初始化向量,使其在类构造函数中包含13个元素

因为在下面的例子中,编译器给出了“语法错误:'常量'”

#包括
使用名称空间系统;
公共引用类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);
    }
};