gpt4 book ai didi

c++ - (C++)用于实例化新对象并将其分配给指向相同对象类型的二维指针 vector 的语法?

转载 作者:行者123 更新时间:2023-11-30 02:27:24 26 4
gpt4 key购买 nike

如果这个问题已经被问到,我深表歉意,但我看到的其他答案让我感到困惑。我有一个类,我想用它来构建另一种对象的二维矩阵。我正在尝试编写一种方法来创建新对象,并将 2D vector 中的指针分配给新对象,但我似乎无法获得正确的语法。

我像这样创建一个 2D vector :

std::vector<std::vector<CSinusoid*>> *m_SineMatrix; //2D Vector of pointers to CSinusoid objects

然后我尝试按照这些思路创建一个方法:

void CWaveMatrix::Init_SineMatrix(int x, int y)
{
m_SineMatrix[x][y] = new CSinusoid();
}

函数内的代码行是我遇到问题的地方。我不知道如何告诉 2D vector 中的特定指针指向新对象。

请注意, vector 和方法都是同一类的私有(private)成员。

最佳答案

我觉得你的问题其实出在这里:

std::vector<std::vector<CSinusoid*>> *m_SineMatrix

m_SineMatrix 不是 CSinusoid 指针的二维 vector ...它是指向此类 vector 的指针。 C++ [] 运算符对原始指针和 vector 都起作用。因此,函数中的代码将调用指针上的 [x] 运算符并将结果视为二维 vector ,然后调用二维 vector 上的 [y] 运算符并将结果视为一维 vector 。它不知道如何将 CSinusoid* 分配给 CSinusoid* 的 vector ,所以它会提示。

要解决此问题,您可以将 *m_SineMatrix 更改为 m_SineMatrix,或者将函数更改为执行 (*m_SineMatrix)[x][y]。

关于c++ - (C++)用于实例化新对象并将其分配给指向相同对象类型的二维指针 vector 的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41775254/

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