例如:
#include "ist1.h"
class ist2:public ist1
{
public:
inline ist2();
int y;
void say();
};
我认为关键字“inline”是对编译器而不是命令的明确“建议”,但为什么它会说错误?为什么编译器不会忽略“内联”?
答案 0 :(得分:1)
在inline type func();
内(注意;结束时)没有内联代码。
如果定义函数,那将是有意义的,但是:
因此,显式内联成员函数只有在类块外部但在头部内部定义时才有意义。
inline
是编译器的“建议”的想法只是误导和僵化。 (想一想:你“建议”每个平台可以做得更好或其他地方的东西:是不是时候从标准定义中删除这个毫无意义的矛盾?)
inline
实际上意味着“此定义可能会在不同的翻译单元中出现多次”。
并且在标头中定义的非模板全局级定义函数(成员或非成员)是必需的。其他一切都只是“噪音”。
答案 1 :(得分:1)
你忘了告诉我们错误是什么;您发布的代码中没有错误。
可能是您从链接器获得了“未定义的引用”(或类似)错误。这是因为必须在每个使用它的翻译单元中定义内联函数,因此,实际上,您必须将定义放在标题中而不是源文件中。
如果错误是别的,那么请告诉我们它是什么。
我认为关键字“inline”是编译器的明确“建议”而不是订单
这是一种常见的误解。虽然它可能在编译器决定是否内联它时用作提示,但它也具有语义含义: