c++ - 在 .cpp 中的类主体外部定义内联函数

标签 c++ inline definition

我编写了以下三个文件:numeros.h、numeros.cpp 和 main.cpp。

我想在主体类之外的 numeros.cpp 中定义内联函数。 根据https://isocpp.org/wiki/faq/inline-functions#where-to-put-inline-keyword把inline关键字放在定义前就可以了。奇怪的是,如果我删除 inline 关键字,程序会编译。

//numeros.h
#ifndef NUMEROS_H
#define NUMEROS_H
class Numeros 
{
public:
    Numeros();
    int valor();
private:
    int x;
};
#endif 

-

//numeros.cpp
#include "numeros.h"
Numeros::Numeros() 
{ 
    x = 10; 
}
inline int Numeros::valor()
{
    return x;
}

-

//main.cpp
#include "numeros.h"
#include <iostream>
using namespace std;
int main()
{
    Numeros n1;
    cout<< n1.valor();
    cin.get();
    return 0;
}

编辑:

在 Visual Studio 2015 上构建错误:

1>main.obj : error LNK2019: símbolo externo "public: int __thiscall Numeros::valor(void)" (?valor@Numeros@@QAEHXZ) sin resolver al que se hace referencia en la función _main 1>c:\users\pablo\documents\visual studio 2015\Projects\Project6\Debug\Project6.exe : fatal error LNK1120: 1 externos sin resolver

在 Qt Creator 3.5.1 上构建错误:

C:\Users\Pablo\Dropbox\QtProjects\Windows\build-untitled-Desktop_Qt_5_5_1_MinGW_32bit-Debug\debug\main.o:-1: In function `main':

C:\Users\Pablo\Dropbox\QtProjects\Windows\untitled\main.cpp:13: error: undefined reference to `Numeros::valor()'

collect2.exe:-1: error: error: ld returned 1 exit status

最佳答案

内联函数的定义必须在调用该函数的任何地方可见。编译器提示的问题是 Numeros::valor 的定义在 main 中不可见。为了解决这个问题,定义必须放在标题中,或者您不能将其标记为内联。

关于c++ - 在 .cpp 中的类主体外部定义内联函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34237751/

相关文章:

html - 4个div,需要居中2个中心div

c# - 什么是编程中的托管代码或非托管代码?

c++ - 无论如何我可以阻止 throw 调用 malloc

c - 链接器错误内联函数

c++ - 以列表格式读取文件时如何忽略换行符

c++ - 为 API 使用内联函数

c - 为什么 typedef 声明不称为 typedef 定义?

c - TI AM335x内存地址定义头文件?

c++ - 如何在一元谓词中使用类成员变量?

c++ - 打开文件 C++ 时出现问题