不知道我哪里出错了..我有两个类似的:
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)
我哪里出错了?
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)
你应该问问自己是否真的需要这么多指针; 他们会变得很混乱.