C++ 向量<;类别>;“没有成员”;功能“;
我有两个类(Vector3在这里是一个不相关的类): 如果我想将C++ 向量<;类别>;“没有成员”;功能“;,c++,C++,我有两个类(Vector3在这里是一个不相关的类): 如果我想将Room()定义为: Room::Room() { roombuttons[0].SetPos(100,100,0); } 我得到一个错误,说类“std::vector”没有成员“SetPos” 为什么我不能在向量中的按钮实例上调用按钮类的SetPos函数 我希望有一个房间实例,其中包含存储在某种数组中的两个按钮,这样我就可以像使用数组的元素一样使用它们。就这样做吧 vector<Button> roombutt
Room()
定义为:
Room::Room() {
roombuttons[0].SetPos(100,100,0);
}
我得到一个错误,说类“std::vector”没有成员“SetPos”
为什么我不能在向量中的按钮实例上调用按钮类的SetPos
函数
我希望有一个房间实例,其中包含存储在某种数组中的两个按钮,这样我就可以像使用数组的元素一样使用它们。就这样做吧
vector<Button> roombuttons;
vector按钮;
而不是
vector<Button> roombuttons[3];
矢量房间按钮[3];
问题在于,您将房间按钮
声明为向量
对象的数组,因此房间按钮[0]
正在访问第一个向量
,而不是第一个按钮
。因此错误是正确的,vector
没有名为SetPos()
的方法。您需要更像这样的东西:
roombuttons[0][0].SetPos(100,100,0);
但这不是你真正想要的。您需要一个按钮的数组,因此
- 将数组改为单个
向量
,然后将其填充到构造函数中:
class Room {
public:
Room();
private:
vector<Button> roombuttons;
};
Room::Room() : roombuttons(3) {
roombuttons[0].SetPos(100,100,0);
...
}
如果您想要固定大小,请使用std::array roombuttons代码>。现在您正在声明一个由三个向量组成的数组。不是一个大小为3的向量。向量空间按钮[3]代码>-是否确实要创建按钮向量数组?您可能需要矢量房间按钮(3)代码>roombuttons[0]
是一个向量
,而不是按钮
。它没有名为SetPos
@Fl.pf的成员函数。然后,您需要去掉roombuttons
声明中的[3]
。您需要的是单个向量的按钮,而不是向量数组。@NathanOliver请注意vector roombuttons=vector(3)代码>只能在C++11及更高版本中工作。对于早期版本,只需声明vector roombuttons在类声明中使用code>,然后在构造函数的成员初始化列表中使用roombuttons(3)
,或者roombuttons=vector(3)代码>在构造函数的主体中。在您可以通过索引访问其中任何一个按钮之前,不要忘记将实际的按钮
对象添加到房间按钮
,最好分配一些对象,否则这将在第一次操作符[]
访问时调用未定义的行为。OP总是可以按钮室按钮[3]
如果大小确实是固定的,那就称之为好。@WhozCraig大小对于所有房间都是固定的,我不知道这么简单,谢谢。或者std::array roombuttons代码>
roombuttons[0][0].SetPos(100,100,0);
class Room {
public:
Room();
private:
vector<Button> roombuttons;
};
Room::Room() : roombuttons(3) {
roombuttons[0].SetPos(100,100,0);
...
}
class Room {
public:
Room();
private:
Button roombuttons[3];
};
Room::Room() {
roombuttons[0].SetPos(100,100,0);
...
}