如果这个问题已经被问到,我深表歉意,但我看到的其他答案让我感到困惑。我有一个类,我想用它来构建另一种对象的二维矩阵。我正在尝试编写一种方法来创建新对象,并将 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/