C++ 的新手,它让我很烦躁。
实际代码在另一台计算机上,我无法复制它,所以我会尽量使用伪代码。
我的最终目标是拥有一个可以被多个不同对象访问的 [指针] vector 。我试图解决这个问题的方法是让包含 vector 的原始类有一个类似的方法:
std::vector<myObject*>& myClass::getVectorPointer(){
return &vectorPointer;
}
然后我的各种类最终都有这样一行代码:
std::vector<myObject*>* myStuff = myClassObject.getVectorPointer();
然后我想开始将对象放入 vector 中。所以首先我实例化一个对象:
MyObject* tempObject = new MyObject("grrr");
然后我想把它放在 vector 中,所以我这样做了:
myStuff->push_back(tempObject);
这编译得很好,但当我运行它时却卡住了。通过调试器我得到:
402 [some_]allocator::construct 中的新表达式错误
我不知道这是什么意思。我尝试将::放在我的 new 前面,就像提议的解决方案中所说的那样,但这并没有成功。
所以,回顾一下,假设它是这样的,但语法和逻辑是正确的:
Class A.h
#include <vector>
#include "myObject.h"
ClassA{
public:
classA();
inline std::vector<myObject*>* myClass::getVectorPointer(){ return &vectorPointer;}
private:
std::vector<MyObject*>* vectorPointer;
}
#include "A.h"
int main() {
ClassA myClassAObject;
std::vector<myObject*>* myStuff = myClassAObject.getVectorPointer();
MyObject* tempObject = new MyObject("grr");
myStuff->push_back(tempObject);
}
产生 402。
这只是一个简单的语法问题,还是因为指向指针 vector 的指针是不行的,所以我犯了错误?
我一直在尝试了解如何传递 vector ,虽然我看到的大部分内容都显示调用接收 &vector 的函数并对函数中的 vector 执行操作,但我不明白这是怎么回事与调用返回引用然后对那里的 vector 执行填充操作的函数有很大不同。这只是我的一个巨大的逻辑缺陷吗?
关于如何快速将我的程序修复到正确的位置,有什么线索吗?
我将尝试建议的事情。你们都提供了难以置信的帮助。非常感谢!
最佳答案
在上面的代码中,vectorPointer 从未被赋值/分配。
通常返回引用比返回指针更好,因为它们不能为空。
Class A.h
#include <vector>
#include "myObject.h"
ClassA{
public:
classA();
inline std::vector<myObject*>& myClass::getVectorPointer(){ return vectorPointer;}
private:
std::vector<MyObject*> vectorPointer;
}
关于c++ - 传递指针 vector 的指针......不不?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3852610/