![](/img/trans.png)
[英]no suitable conversion function from (C++) std::istream &std::getline<char, std::char_traits<char>, std::allocator<char>> to bool
[英]No suitable conversion function from std::vector<Object *, std::allocator<Object *>>“ to ”Object *" exists
不知道我要去哪里错..我有两个这样的类:
class One
{
public:
vector<Object*> myObjects;
};
class Two
{
public:
vector<Object*> * pointertoObjects;
};
然后,我想创建一个从pointertoObjects到myObjects的指针,并且这样做是这样的:
pointertoObjects = &myObjects;
但是,当我尝试通过元素访问时:
void doFunction(Object * object);
doFunction(pointertoObjects[i])
它给我一个错误:
Error: no suitable conversion function from std::vector<Object *, std::allocator<Object *>>" to "Object *" exists
我哪里出问题了?
pointertoObjects[i]
这会将指针视为vector
对象数组开始的地址,并为您提供该数组的元素i
。 (由于没有数组,只有一个向量,如果i
不为零,您将得到未定义的行为)。
如果您想要指针指向的向量的元素i
,则为:
(*pointertoObjects)[i]
或具有范围检查功能,并减少了意外类型错误的范围:
pointertoObjects->at(i)
您应该问自己,是否真的需要那么多指针? 他们会变得很混乱。
在编写pointertoObjects[i]
,您将取消引用pointertoObjects
而C ++的行为就像是vector<Object*>
的数组,因此, pointertoObjects[i]
产生了对vector<Object*>
引用。
要解决此问题:
(*pointertoObjects)[i]
您有一个简单的类型不匹配。 在pointertoObjects
上使用数组索引时,将获得对vector<Object*>
的引用,而不是doFunction
所需的Object *
。
您可能想要这样的东西: doFunction((*pointertoObjects)[i]);
vector<Object*> pointedObjects = *pointertoObjects;
Object* obj = pointedObjects[i]
doFunction(obj);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.