我正在研究的这个项目使用指针,继承和内部聚合(规则3)。我理解3的规则的概念,并在这里阅读了一些关于它的帖子。需要实施的基本事项是建立一个房间类,每个房间有几个会议(内部聚合)。房间具有以下属性:
string d_name
int d_nMeetings
会见** d_schedule。
我知道三个规则需要在Meeting ** d_schedule中实现,d_schedule是一个会议指针数组,它调用指向会议的指针数组。 但是我不太确定在这种情况下如何工作(在d_schedule或下面的函数(在meeting.h中)读取void add(Meeting *)。以下是我的代码:
Meeting.h:
#include <vector>
#include <string>
#include "item.h"
class Meeting: public Item{
protected:
bool d_coffee;
std::vector<std::string> d_participants;
public:
Meeting(std::string, Time, int, bool, std::vector<std::string>, int);
void print();
};
Meeting.cpp:
#include "meeting.h"
#include <iostream>
#include <string>
#include <vector>
#include "item.h"
Meeting::Meeting(std::string _what, Time _deadline, int _duration, bool _coffee, std::vector<std::string> _participants, int _priority = 0) : Item(_what, _deadline, _duration, priority = 0)
{
d_coffee = _coffee;
d_participants = _participants;
}
void Meeting::print()
{
Item::print();
}
Room.h:
#include "meeting.h"
class Room{
private:
std::string d_name;
Meeting** d_schedule;
int d_nMeetings;
public:
Room(std::string _name);
void setName(std::string);
std::string getName();
bool add(Meeting*);
void print();
};
由于
答案 0 :(得分:0)
为什么不使用std::vector<Meeting*> d_schedule;
而不是重新实现相同的功能。
如果您仍想使用Meeting** d_schedule;
,请查看vector
数据结构的工作原理:
http://codefreakr.com/how-is-c-stl-implemented-internally/
基本上你必须分配一些固定数组,并在每次填满时重新分配并复制它。