gpt4 book ai didi

c++ - 如何重新调用初始化 3D vector 的构造函数

转载 作者:太空宇宙 更新时间:2023-11-04 13:08:09 26 4
gpt4 key购买 nike

我认为问题与此构造函数有关:

vector<vector<vector<int>>> itemMatrix;
ItemConstruct(int numOfZ, int numOfY, int numOfX)
:itemMatrix(numOfZ, vector<vector<int>>(numOfY, vector<int>(numOfX, 1))){}

当我尝试打电话时:

int main (int nNumberofArgs, char* pszArgs[])
{
int a1; int b1; int c1;
int a2; int b2; int c2;
Space i1;
Item i2;
ItemConstruct i3;
cin>>a1>>b1>>c1>>a2>>b2>>c2;
i1.setSize(a1, b1, c1);
i2.setSize(a2, b2, c2);
cout<<"answer: "<<i3.getA();
cin.ignore(10, '\n');
cin.get();
return 0;

}

我收到如下错误:

No matching constructor for initialization of 'ItemConstruct'

class ItemConstruct
{
private:
int numOfX;
int numOfY;
int numOfZ;
int A;
public:
void reqOfItem (Space spc, Item item)
{
numOfX = item.getX()/spc.getX();
numOfY = item.getY()/spc.getY();
numOfZ = item.getZ()/spc.getZ();
}
int getNumOfZ() {return numOfZ;} int getNumOfY() {return numOfY;} int getNumOfX() {return numOfX;}
vector<vector<vector<int>>> itemMatrix;
ItemConstruct(int numOfZ, int numOfY, int numOfX)
:itemMatrix(numOfZ, vector<vector<int>>(numOfY, vector<int>(numOfX, 1))){}
void Matrix (int Z, int Y, int X)
{
for(int z=1; z<=Z; z++)
{
for(int y=1; y<=Y; y++)
{
for(int x=1; x<=X; x++)
{
itemMatrix[z][y][x]=15;
}
}
}
A=itemMatrix[2][2][2];
}
int getA()
{
return A;
}

};

此外,我不确定如何更改 3D vector 元素。如上所示,我尝试通过“for”循环进行更改。您可以忽略“A”值。我只是想确定该方法是如何工作的。我对 C++ 语言很陌生。请帮助我以正确的方式更正我的脚本。

谢谢。

最佳答案

这里:

ItemConstruct i3;

您正在调用默认构造函数(一个不带参数的可调用 ctr),但您的类没有。您可以通过为参数提供默认值将您的构造函数变成默认构造函数:

ItemConstruct(int numOfZ = 0, int numOfY = 0, int numOfX = 0)

但是,更好的方法是在调用构造函数之前确保您拥有构造对象所需的一切(在构造对象之后,它应该处于有效状态,而这对于默认构造函数并不总是可能的。这些参数对于将对象置于有意义的状态可能是必不可少的):

int a,b,c;
cin>>a>>b>>c;
ItemConstruct i3(a,b,c);

关于c++ - 如何重新调用初始化 3D vector 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41226762/

26 4 0
文章推荐: c++ - 查找被调用函数的线程 ID C++
文章推荐: java - 如何在Java中创建一个只接受对角线鼠标移动的MouseMotionListener?
文章推荐: java - 为什么Java不限制子类的可见性大于父类
文章推荐: javascript - 如果

增长,则让

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com