求大神帮忙看一下哪里错了

qq_34038233 2016-03-13 05:00:03
部分代码如下
#ifndef LIBRARY_H
#define LIBRARY_H
#include<string>
using namespace std;
class Library
{
public:
Library(int,int,Catalogue,Borrower*);
~Library();
void displayMessage()const;
void displayBorrower()const;
void setmulu();
void setborr();
private:
int totalBook;
int borrower;
//就是下面两行报错,把Library类里有关这两个的注释掉就可以运行
Catalogue mulu;
Borrower *totalBorrower;
};
class Catalogue
{
public:
Catalogue(BookRecord* = NULL,int=0);
~Catalogue();
private:
BookRecord *totalBookRecord;
int total;
};
void enterborrower();
void enterbookrecord();
#endif

.cpp部分代码

#include<string>
#include<iostream>
#include<cstdlib>
#include"Library.h"
using namespace std;

Library::Library(int a,int b,Catalogue c,Borrower *d)
:mulu(c)
{
totalBook = a;
borrower = b;
totalBorrower = d;
}


大神帮帮忙
...全文
74 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 2016-03-13
  • 打赏
  • 举报
回复
方法有两种:
1.Catalogue的定义放前面,不然Library类里面不知道Catalogue是个什么东西
2.在Library类之前声明Catalogue类,语句是:class Catalogue;
但有个问题(这个声明是一个前向声明,在声明之后、定义之前,类Catalogue是一个不完全类型,即已知Catalogue是一个类型,但不知道包含哪些成员。不完全类型只能以有限方式使用。不能定义该类型的对象。不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数。)
所以Catalogue mulu;也要改为Catalogue *mulu;或Catalogue &mulu;
pengzhixi 2016-03-13
  • 打赏
  • 举报
回复
你需要将Catalogue的定义放前面

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧