关于类中含友元函数,怎样定义头文件的问题
--以下为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;放到头文件声明前