0

我正在尝试强制内联成员函数,但出现错误:

"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

4

1 回答 1

4

如果您想确保您的函数是内联的,请移动标题中的定义:

a_class.h
    #ifndef A_CLASS_H  #define A_CLASS_H
    class a_class {public: __inline__ void mem_func() {} /*<-definition*/; };
    #endif
于 2011-08-18T14:28:22.930 回答