c++类:对方法的未定义引用
C++ class : undefined reference to method
我有一些名为gSprite的类,它允许轻松地操作图像,操作等。当我完成了它的一些功能并修复了所有错误时,我试图使用它并获得了其他功能。下面是类的自定义创建者
gSprite * crGSprite(sf::Sprite * sprsource){
return new gSprite(sprsource);
}
gSprite * crGSprite(sf::Sprite * sprsource,int sx, int sy){
return new gSprite(sprsource,sx,sy);
}
gSprite * crGSprite(std::vector<sf::Sprite> spr,int sx,int sy){
return new gSprite(spr,sx,sy);
}
所有的创建者都只是构造一个新对象并返回对它的引用。然后我有一个函数用于存储所有文件的数据,并在其他文件中创建它们,可以到达这些创建者:
gSprite * loadsprite(string path)
{
sf::Sprite sprite;
sf::Texture tex;
tex.loadFromFile(path);
sprite.setTexture(tex);
gSprite * gspr = crGSprite(&sprite);
addGSprite(gspr);
return gspr;
}
一切都好。但是。类还包含一些函数。由于某种原因,当我尝试执行update()时,它有效,但当我尝试执行setPosition()时,它以"对gSprite::setPosition(int,int)
的未定义引用"失败。下面是这两个函数和.hpp文件:
void update()
{
sprite = anim_sprites[num];
sprite.setPosition(sf::Vector2f(x,y));
return;
}
和
void setPosition(int nx,int ny)
{
x=nx;
y=ny;
return;
}
高压泵:
#ifndef Sprites_H_
#define Sprites_H_
extern sf::RenderWindow * windowsrc;
class gSprite {
int x;
int y;
sf::Sprite sprite;
std::vector<sf::Sprite> anim_sprites;
sf::Vector2f size;
bool anim;
int num;
public:
gSprite(sf::Sprite * sprsource);
gSprite(sf::Sprite * sprsource,int sx, int sy);
gSprite(std::vector<sf::Sprite> spr,int sx,int sy);
void setSize(float x, float y);
void resize(float x,float y);
void scale(float x,float y);
void draw_s();
void update();
void move(int nx,int ny);
void setPosition(int nx,int ny);
};
gSprite * crGSprite(sf::Sprite * sprsource);
gSprite * crGSprite(sf::Sprite * sprsource,int sx, int sy);
gSprite * crGSprite(std::vector<sf::Sprite> spr,int sx,int sy);
void addGSprite(gSprite * sprtsource);
void drawGSprites();
#endif /* Sprites_H_ */
我在类声明中声明方法
当你写
void setPosition(int nx,int ny)
{
x=nx;
y=ny;
return;
}
你定义了一个独立的函数,它不是任何类的一部分。要实现在gSprite
类中声明的成员函数,您必须编写
void gSprite::setPosition(int nx,int ny)
{
x=nx;
y=ny;
return;
}
相关文章:
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用