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 中 定义的 的函数一起使用。在你的情况下,删除它,它应该可以正常工作。
鉴于头文件中的以下 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 中 定义的 的函数一起使用。在你的情况下,删除它,它应该可以正常工作。