C++ std::vector没有合适的转换函数<;对象*,标准::分配器<;对象*>&燃气轮机&引用;至;对象*”;存在

C++ std::vector没有合适的转换函数<;对象*,标准::分配器<;对象*>&燃气轮机&引用;至;对象*”;存在,c++,pointers,C++,Pointers,我不知道我会错在哪里。。我有两门课是这样的: class One { public: vector<Object*> myObjects; }; class Two { public: vector<Object*> * pointertoObjects; }; 但当我试图通过元素访问时: void doFunction(Object * object); doFunction(pointertoObjects[i]) 这给了我一个错

我不知道我会错在哪里。。我有两门课是这样的:

class One
{
    public:
    vector<Object*> myObjects;
};

class Two
{
    public:
    vector<Object*> * pointertoObjects;
};
但当我试图通过元素访问时:

void doFunction(Object * object);
doFunction(pointertoObjects[i])
这给了我一个错误:

Error: no suitable conversion function from std::vector<Object *, std::allocator<Object *>>" to "Object *" exists
错误:不存在从std::vector”到“Object*”的合适转换函数

我哪里出错了?

您有一个简单的类型不匹配。当您在
指针对象上使用数组索引时,您得到的是一个
向量的引用,而不是
doFunction
所需的
对象*


你可能想要这样的东西:
doFunction((*pointertoObjects)[i]);

你有一个简单的类型不匹配。当你在
pointertoObjects
上使用数组索引时,你得到的是一个
向量的引用,而不是
doFunction
所要求的
对象*

您可能需要这样的内容:
doFunction((*pointertoObjects)[i]);

这将指针视为
vector
对象数组的起始地址,并为您提供该数组的元素
i
(因为没有数组,只有一个向量,如果
i
为非零,您将获得未定义的行为)

如果需要指针指向的向量的元素
i
,则为:

(*pointertoObjects)[i]
(*pointertoObjects)[i]
或使用范围检查和较小的意外类型错误范围:

pointertoObjects->at(i)
你应该问问自己,你是否真的需要这么多的指针;它们可能会让人很困惑

这将指针视为
vector
对象数组的起始地址,并为您提供该数组的元素
i
(因为没有数组,只有一个向量,如果
i
为非零,您将获得未定义的行为)

如果需要指针指向的向量的元素
i
,则为:

(*pointertoObjects)[i]
(*pointertoObjects)[i]
或使用范围检查和较小的意外类型错误范围:

pointertoObjects->at(i)

你应该问问自己是否真的需要这么多的指针,它们可能会变得很混乱。

<>当你写代码> PoToToObjs[i]代码时,你是在取消代码> PoToToObjs< /C> >,C++的行为就像是一个数组<代码>矢量< /代码>,所以<代码> PoToToObjs[i] < /Cord>产生了一个(参考)
向量

要解决这个问题:


当您编写<代码> PoToToObjs[i]代码>时,您将取消代码> PoToToObjs<代码>,C++的行为就像是一个代码< >向量< /代码>的数组,所以<代码> PoToToObjs[i] <代码>产生一个(引用)<代码>向量< /> > < /P> 要解决这个问题:

vector pointedObjects=*pointertoObjects;
Object*obj=点对象[i]
doj功能;
向量点对象=*点对象;
Object*obj=点对象[i]
doj功能;

编译器会准确地告诉您问题所在。我知道,但我不知道如何解决!:D编译器会准确地告诉您问题所在。我知道,但我不知道如何解决!:DAh,那么我如何访问指定数组索引中的对象?啊,那么我如何访问指定数组索引中的对象?非常感谢:D工作得很好谢谢:D工作得很好