【发布时间】:2011-04-20 15:18:39
【问题描述】:
C++ 新手,它让我很兴奋。
实际代码在另一台计算机上,我无法复制它,所以我会尽力使用伪代码。
我的最终目标是拥有一个可以被多个不同对象访问的 [指针] 向量。我试图解决这个问题的方法是让包含向量的原始类有一个类似的方法:
std::vector<myObject*>& myClass::getVectorPointer(){
return &vectorPointer;
}
那么我的各种类最终都会有这样一行代码:
std::vector<myObject*>* myStuff = myClassObject.getVectorPointer();
然后我想开始将对象扔进向量中。所以首先我实例化一个对象:
MyObject* tempObject = new MyObject("grrr");
然后我想把它放在向量中,所以我这样做了:
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 并对函数中的向量进行处理的函数,但我不明白这是怎么回事与调用返回引用然后对那里的向量进行处理的函数有很大不同。这只是我的一个巨大的逻辑缺陷吗?
任何线索我可以如何修复我的程序到什么是正确的,非常快?
我将尝试建议的事情。你们都非常有帮助。非常感谢!
【问题讨论】:
-
指向指针向量的指针是合法的 c++ - 但不一定是最好的设计。您的 ClassA 构造函数大写正确吗?
-
可以添加
class MyObject的声明吗?
标签: c++ pointers vector pass-by-reference