c++函数指针奇怪的错误,为什么
//file:canvas_object.hpp
class CanvasObject
{
public:
bool switch_shape() { return switch_shape(true); }
bool switch_shape(bool order);//逆时针 or 顺时针
}
//file:canvas_object.cpp
inline bool CanvasObject::switch_shape(bool order)
{
return true;
}
//file: canvas_view.cpp
//一个静态成员
bool (CanvasObject:: *CanvasView::_ctl_callfuncs[5])() = {
&CanvasObject::move_down,
&CanvasObject::move_down,
&CanvasObject::move_left,
&CanvasObject::move_right,
&CanvasObject::switch_shape,
};
error:
Undefined symbols for architecture i386:
"CanvasObject::switch_shape(bool)", referenced from:
CanvasObject::switch_shape() in canvas_view.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我把那个函数定义中inline去掉编译就通过了,为什么呢?我试过直接让改成
bool switch_shape() { return true; }也通过了,我把那个函数指针换成其他函数也没问题,求解
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
找到说明了,,内联函数要定义在头文件中。。。。
编译时内联展开,不会产生函数,所以提示未定义的符号