c++在类成员函数上执行 __inline__ 时出现链接错误:找不到符号
我试图强制内联一个成员函数,但出现错误:
"a_class::mem_func()", referenced from:
func(a_class&) in func.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
产生错误的蒸馏代码
a_class.h
#ifndef A_CLASS_H #define A_CLASS_H
class a_class {public: __inline__ void mem_func(); };
#endif
a_class.cpp
#include "a_class.h"
__inline__ void a_class::mem_func() {}
func.h
#ifndef FUNC_H #define FUNC_H #include"a_class.h"
void func(a_class & obj);
#endif
func.cpp
#include "func.h"
void func(a_class & obj) {obj.mem_func();}
main.cpp
#include <iostream> #include "func.h" #include "a_class.h"
int main () {a_class obj; func(obj);}
这是我正在使用 Xcode / gcc
I'm trying to force inline a member function and I get the error:
"a_class::mem_func()", referenced from:
func(a_class&) in func.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
here is the distilled error-producing code
a_class.h
#ifndef A_CLASS_H #define A_CLASS_H
class a_class {public: __inline__ void mem_func(); };
#endif
a_class.cpp
#include "a_class.h"
__inline__ void a_class::mem_func() {}
func.h
#ifndef FUNC_H #define FUNC_H #include"a_class.h"
void func(a_class & obj);
#endif
func.cpp
#include "func.h"
void func(a_class & obj) {obj.mem_func();}
main.cpp
#include <iostream> #include "func.h" #include "a_class.h"
int main () {a_class obj; func(obj);}
I'm using Xcode / gcc
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您想确保您的函数是内联的,请移动标题中的定义:
If you want to make sure your function is inlined, move the definition in the header: