我是 C++ 新手,正在制作 2D 游戏。我似乎遇到了动画精灵的问题:
我有一个类,其中包含一个精灵(表)的动画数据的私有多维向量。该类的工作方式如下:
#include <vector>
class myClass {
private:
std::vector< std::vector<float> > BigVector;
public:
//constructor: fills the multidimentional vector
//with one-dimentional vectors returned by myfunction.
myClass() {
//this line is called a few times within a while loop
std::vector<float> holder = myFunction();
}
std::vector<float> myFunction() {
std::vector<float> temp;
//fill temp
return temp;
}
//Other class access point for the vector
float getFloat(int n, int m) {
return Vector[n][m];
}
};
该类本身包含在另一个类中,该类使用 getFloat 函数检索数据。
在构造函数的末尾,BigVector 填充了许多包含浮点数的向量,这是应该的。但是,当构造函数退出并且我想使用 getFloat 函数检索数据时,BigVector 仅包含 1 个元素;添加的第一个元素。
我相信这与持有人向量超出范围有关......有什么想法吗?
编辑
我找到了答案:问题不在于这个类,而在于使用它的类:我没有(重新)声明我的私有“Animator”,而是声明了一个局部变量,这阻止了我的 Animator 更新。基本上:
private: Animator A //calls upon the default construstor of Animator class
然后在函数/构造函数中声明
Animator A(parameters); //creates a local instance of Animator called A
代替
A = Animator(parameters); //redeclares A as a new Animator with the parameters
这就是我想要的。我的默认构造函数向 BigVector 添加了一个向量,导致我认为 BigVector 的其余部分已被删除。
希望这可以帮助!