管理嵌套类
Managing nested classes
这是嵌套 classes 的一个简单示例,我认为这在逻辑上是正确的:
class PIS{ // passenger information system
public:
class BusStop;
void add_busStop();
//... other methods
private:
std::vector<BusStop> busStops; //There are many bus stops
};
class PIS::BusStop{
public:
struct BusInfo;
std::string get_stopName();
//... other methodes
private:
std::vector<BusInfo> informationBoard;
};
struct PIS::BusStop::BusInfo{
std::string mfrom;
std::string mto;
//... etc.
};
我不确定我应该如何为此实现接口。这里的主要问题是访问私有对象。下面你可以看到我在说什么:
PIS oPIS; //PIS object;
oPIS.add_busStop(); //New BusStop object is pushed to the vector busStops
现在如何访问 BusStop 对象中的方法?我是否应该向 PIS class 添加一个 "get_busStops()" 方法,从而 return 指向该向量的指针?或者矢量 busStops 应该是公开的?我能想到的最后一个解决方案是 return 只有一个 BusStop 对象的方法,存储在 busStops 向量中,它将其索引作为参数。
我认为你应该保留 std::vector<BusStop> busStops
private 并在你的 PIS
class 中实现方法,这些方法将涵盖使用你的私有对象所需的所有操作,而不仅仅是 returning 指向整个向量甚至单个对象的指针。
要访问 BusStop
及以下版本中的方法,您可以在 PIS
class 中实现镜像方法:
class PIS{ // passenger information system
public:
class BusStop;
std::string get_StopName(int iBusStopIndex){return busStops[iBusStopIndex].get_StopName();};
void add_busStop();
//... other methods
private:
std::vector<BusStop> busStops; //There are many bus stops };
对每个方法都执行此操作可能会令人沮丧,但是一旦您实现了代码,您和其他程序员就可以更轻松地使用和阅读它。
如果您仍然希望 return 指向您的私有成员,那么将它们保持私有是没有意义的,您应该改为 public - 您将获得相同的结果 write/read 控制级别,但您会将所有数据保存在一个地方。
这是嵌套 classes 的一个简单示例,我认为这在逻辑上是正确的:
class PIS{ // passenger information system
public:
class BusStop;
void add_busStop();
//... other methods
private:
std::vector<BusStop> busStops; //There are many bus stops
};
class PIS::BusStop{
public:
struct BusInfo;
std::string get_stopName();
//... other methodes
private:
std::vector<BusInfo> informationBoard;
};
struct PIS::BusStop::BusInfo{
std::string mfrom;
std::string mto;
//... etc.
};
我不确定我应该如何为此实现接口。这里的主要问题是访问私有对象。下面你可以看到我在说什么:
PIS oPIS; //PIS object;
oPIS.add_busStop(); //New BusStop object is pushed to the vector busStops
现在如何访问 BusStop 对象中的方法?我是否应该向 PIS class 添加一个 "get_busStops()" 方法,从而 return 指向该向量的指针?或者矢量 busStops 应该是公开的?我能想到的最后一个解决方案是 return 只有一个 BusStop 对象的方法,存储在 busStops 向量中,它将其索引作为参数。
我认为你应该保留 std::vector<BusStop> busStops
private 并在你的 PIS
class 中实现方法,这些方法将涵盖使用你的私有对象所需的所有操作,而不仅仅是 returning 指向整个向量甚至单个对象的指针。
要访问 BusStop
及以下版本中的方法,您可以在 PIS
class 中实现镜像方法:
class PIS{ // passenger information system
public:
class BusStop;
std::string get_StopName(int iBusStopIndex){return busStops[iBusStopIndex].get_StopName();};
void add_busStop();
//... other methods
private:
std::vector<BusStop> busStops; //There are many bus stops };
对每个方法都执行此操作可能会令人沮丧,但是一旦您实现了代码,您和其他程序员就可以更轻松地使用和阅读它。
如果您仍然希望 return 指向您的私有成员,那么将它们保持私有是没有意义的,您应该改为 public - 您将获得相同的结果 write/read 控制级别,但您会将所有数据保存在一个地方。