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工作得很好