没有合适的转换函数从std :: vector <Object*,std :: allocator <Object*>>"to"Object*"存在

Spl*_*lit 0 c++ pointers

不知道我哪里出错了..我有两个类似的:

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

class Two
{
    public:
    vector<Object*> * pointertoObjects;
};
Run Code Online (Sandbox Code Playgroud)

然后我想创建一个从pointertoObjects到myObjects的指针,我这样做:

pointertoObjects = &myObjects;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试访问传递元素时:

void doFunction(Object * object);
doFunction(pointertoObjects[i])
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误:

Error: no suitable conversion function from std::vector<Object *, std::allocator<Object *>>" to "Object *" exists
Run Code Online (Sandbox Code Playgroud)

我哪里出错了?

Mik*_*our 5

pointertoObjects[i]
Run Code Online (Sandbox Code Playgroud)

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

如果你想要i指针指向的向量元素,那么:

(*pointertoObjects)[i]
Run Code Online (Sandbox Code Playgroud)

或者使用范围检查,减少意外类型错误的范围:

pointertoObjects->at(i)
Run Code Online (Sandbox Code Playgroud)

你应该问问自己是否真的需要这么多指针; 他们会变得很混乱.