gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:55:32 24 4
gpt4 key购买 nike

我编写了以下三个文件: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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com