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

关于类中含友元函数,怎样定义头文件的有关问题

2012-03-05 
关于类中含友元函数,怎样定义头文件的问题--以下为BookData.h文件--#includestring#includeBookList.h

关于类中含友元函数,怎样定义头文件的问题
--以下为BookData.h文件--
#include   <string>
#include   "BookList.h "
using   namespace   std;

#ifndef   BOOKDATA_H
#define   BOOKDATA_H

const   int   MaxN   =   100000;

class   BookData   {
friend   class   BookList;
}

--以下为BookList.h文件--
#include   <string>
#include   <algorithm>
using   namespace   std;

#ifndef   BOOKLIST_H
#define   BOOKLIST_H

class   BookData;

class   BookList   {
private:
int   a,   b,   c;
public:
void   list(BookData   &book,   const   string   cmd);
};

#endif

将BookList定义为BookData的友元类,需要用到BookList类的定义。
在BookList中的共有函数中又需要用到BookData类的定义。

按照以上的程序写,VS日志如下:
(ClassDesign为主文件)

正在编译...
ClassDesign.cpp
BookData.cpp
正在生成代码...
正在编译资源清单...
正在链接...
ClassDesign.obj   :   error   LNK2019:   无法解析的外部符号   "public:   void   __thiscall   BookData::setNotEmpty(void) "   (?setNotEmpty@BookData@@QAEXXZ),该符号在函数   "void   __cdecl   InitDataBase(void) "   (?InitDataBase@@YAXXZ)   中被引用
……

(总之就是所有BookData的共有成员函数全部都被提示社么“无法解析的外部符号”,但是编译确实过了)

请高手帮忙,谢谢!

[解决办法]
在BookList的cpp文件包含 BookData.h
BookData.h不要包含BookList.h 改在实现文件中包含.然后将class BookList;放到头文件声明前

热点排行