c++ - 传递指针 vector 的指针......不不?

标签 c++ pointers vector pass-by-reference

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/

相关文章:

c++ - 模板和可执行文件

c - 使用递归读入一行并返回指向该字符串的指针

c++ - 自定义 QWidget 不继承父样式表

c++ - 模板转换运算符问题

c++ - 如何使用 FFmpeg C API 对 H.264 视频进行编码,然后使用媒体播放器打开输出?

c++ - 如何删除抽象类中类似的 const 和非 const 成员函数之间的代码重复?

c - 打印垃圾值,c

c++ - 如何创建所有缺少一个元素的样本 vector 的 vector ?

c++ - VS2012 在 64 位目标中 vector <bool> 的性能不佳

c++ - 在自定义反向 vector 迭代器中看不到第一个元素