c ++ - 在以下情况下实现内部聚合

时间:2015-10-19 03:00:32

标签: c++ pointers aggregation

我正在研究的这个项目使用指针,继承和内部聚合(规则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();
};

由于

1 个答案:

答案 0 :(得分:0)

为什么不使用std::vector<Meeting*> d_schedule;而不是重新实现相同的功能。

如果您仍想使用Meeting** d_schedule;,请查看vector数据结构的工作原理: http://codefreakr.com/how-is-c-stl-implemented-internally/

基本上你必须分配一些固定数组,并在每次填满时重新分配并复制它。