首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于成员函数内联的有关问题

2012-02-09 
关于成员函数内联的问题写代码如下://Tesh.hclassA{public:voidFoo(intx,inty)}//Test.cpp#includeTest

关于成员函数内联的问题
写代码如下:
//Tesh.h
class   A{
public:
void   Foo(int   x,   int   y);
};

//Test.cpp
#include   "Test.h "
#include   <iostream>
using   namespace   std;

inline   void   A::Foo(   int   x,   int   y   )
{
cout   < <   x   < <   "   "   < <y   < <endl;
}

//main.cpp
#include   "Test.h "
int   main()
{
A   a;
a.Foo(1,2);
return   0;
}
使用visual   c++2005   express编译器进行编译的,编译的时候没有错误,链接的时候就有了错误了,错误信息:
error   LNK2019:   无法解析的外部符号   "public:   void   __thiscall   A::Foo(int,int) "   (?Foo@A@@QAEXHH@Z),该符号在函数   _main   中被引用

如果在函数定义的时候不用inline,就没有问题了,请问一下为什么会出现问题呢?




[解决办法]
inline的函数必须放在.h里,你的C++书没讲过吗?
[解决办法]
把定义放在.h里

要不就不要inline
[解决办法]
inline 定义需要和它的声明放一起
[解决办法]
对于内联函数,编译器需要在调用点将其展开,所以对于头文件来说这个函数必须是可见的,不然编译器就不知道怎么去展开这个函数了。

所以inline函数应该定义在头文件里面
[解决办法]
如果真想inline,干脆把实现扔class里吧
[解决办法]
对于内联函数,应该将函数的申明和定义分开。
在C++中有两种函数都应该是内联的。一种是类的成员函数,一种是显示定义的内联函数。
[解决办法]
更正。。
应该是类中定义的函数默认为内联的。
[解决办法]
内联函数的函数体紧跟在类方法声明之后,圆括号后面没有分号.
[解决办法]
inline的函数必须放在.h里
[解决办法]
1、使用关键字 inline , 在类体外定义

2、把定义写在类体内,就内联了

热点排行