当我们在该类的头文件中定义一个类成员函数时,必须使用内联关键字.为什么
when we define a class member function in header file of that class then inline keyword must be used. why?
我在头文件中定义了一个类,并在同一个头文件中实现了它的功能。但是在定义这些函数时,我必须将内联关键字与函数定义放在一起。否则编译器给出编译时错误。
我知道内联只是对编译器的一个提示。那么为什么有必要将内联关键字与函数定义放在一起。
我正在使用带有qt的Visual Studio编译器来编译代码
这是代码
温度线.h
#ifndef TEMPINLINE_H
#define TEMPINLINE_H
#include "iostream"
class tempinline
{
public:
tempinline();
void printH();
};
void tempinline::printH()
{
std::cout << "hhhh";
}
#endif // TEMPINLINE_H
温度线.cpp
#include "tempinline.h"
tempinline::tempinline()
{
}
主.cpp
#include <iostream>
#include "tempinline.h"
using namespace std;
int main()
{
tempinline aa;
aa.printH();
cout << "Hello World!" << endl;
return 0;
}
错误
OUT:debugtempinline.exe @C:UsersutradeAppDataLocalTemp8tempinline.exe.8256.687.jom
LINK : debugtempinline.exe not found or not built by the last incremental link; performing full link
tempinline.obj : error LNK2005: "public: void __thiscall tempinline::printH(void)" (?printH@tempinline@@QAEXXZ) already defined in main.obj
debugtempinline.exe : fatal error LNK1169: one or more multiply defined symbols found
jom: C:Usersutradebuild-tempinline-Desktop-DebugMakefile.Debug [debugtempinline.exe] Error 1169
jom: C:Usersutradebuild-tempinline-Desktop-DebugMakefile [debug] Error 2
18:36:20: The process "C:Qtqtcreator-3.0.0binjom.exe" exited with code 2.
Error while building/deploying project tempinline (kit: Desktop)
When executing step 'Make'
经过大量尝试,我能够编译我的代码我在 tempinline .cpp 中注释代码,并注释构造函数timeinline();
声明。所以这里发生的事情是,当我在一个项目中多次包含头文件时,编译器会看到void tempinline::printH()
函数的多个定义。因此,编译器无法知道要链接哪个函数,并且给出了链接器错误。
但是,如果我们使用inline void tempinline::printH()
函数指定内联关键字,那么由于内联关键字的行为,编译器不必将函数中的代码替换(内联属性)链接到
相关文章:
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 将公共但非静态的成员函数与ALGLIB集成
- 使用指向成员的指针将成员函数作为参数传递
- 将重载的成员函数传递给函数模板
- 我不小心调用了一个没有自己类对象的成员函数.但这是怎么回事呢
- 如何在C++中使用非静态成员函数作为回调函数
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 关联容器的下界复杂性:成员函数与非成员函数
- 在 C++ 中用派生类型重写成员函数
- 链表的泛型函数remove()与成员函数remove)
- 如何将lambda作为模板类的成员函数参数
- constexpr构造函数需要常量成员函数时出现问题
- 将自由函数绑定为类成员函数
- 区分非成员函数和头文件中的成员函数
- 如何从子成员函数修改父公共成员变量
- 保留对其他类的成员函数的引用
- 在运算符重载定义中使用成员函数(const错误)
- 内联如何影响模块接口中的成员函数
- 将成员函数指针作为参数传递给模板方法