C ++:单独编译的简单情况下的未定义引用问题

C++ : undefined reference issue in a simple case of separate compilation

鉴于头文件中的以下 class 定义 - “class1.h”

#ifndef CLASS1_H
#define CLASS1_H

class class1
{
public:
    class1 &fcn();    
};

#endif

并且在源文件中定义了成员函数fcn - "class1.cpp"

#include "class1.h"

#include<iostream>

inline class1 &class1::fcn()
{
    std::cout << "Welcome to Class1" << std::endl;
    return *this;
}

执行“main.cpp”中的以下代码时

#include <iostream>
#include "class1.h"

int main()
{
    class1 myclass;
    myclass.fcn();
}

它产生以下错误

C:\...\rough>g++ main.cpp class1.cpp && a
C:\...\Local\Temp\ccJvpsRr.o:main.cpp:(.text+0x15): undefined reference to `class1::fcn()'
collect2.exe: error: ld returned 1 exit status

出了什么问题?

inline 关键字是问题所在。您应该将其与 headers 中 定义的 的函数一起使用。在你的情况下,删除它,它应该可以正常工作。