【发布时间】:2019-12-17 09:18:57
【问题描述】:
有1个主类和3个类:Main、MLME、MAC和Network。
我希望在调用 MAC 的构造函数时在 MAC 对象中创建一个 MLME 对象。然后在调用 Network 构造函数时将同一个对象共享给 Network 对象。
这不会使 MLME 对象成为全局对象或使用 malloc() 或 new 分配内存。
我认为这应该使用我不完全理解的参考资料来完成。 Network.cpp 中可能还必须有一些初始化列表?我在 C 方面比 C++ 更有经验,并且为了理解所有这些,我做了很多尝试。
这是我对结构、头文件和cpp文件的一些想法:
Main.cpp
#include "MAC.h"
#include "Network.h"
int main() {
MAC mac();
Network network(mac);
return 0;
}
这是要分享的 MLME 部分:
MLME.h
#ifndef MLME_H_INCLUDED
#define MLME_H_INCLUDED
class MLME {
public:
MLME();
};
#endif
MLME.cpp
#include "MLME.h"
MLME::MLME() {}
MAC 类:
MAC.h
#ifndef MAC_H_INCLUDED
#define MAC_H_INCLUDED
#include "MLME.h"
class MAC {
private:
MLME mlme; // NULLED ?
public:
MAC();
MLME getMLME();
};
#endif
MAC.cpp
#include "MAC.h"
MAC::MAC() {
mlme = MLME:MLME();
}
MLME MAC::getMLME() {
return mlme;
}
网络类:
Network.h
#ifndef NETWORK_H_INCLUDED
#define NETWORK_H_INCLUDED
#include "MLME.h"
class Network {
private:
MLME& mlme;
public:
Network(MAC mac);
};
#endif
Network.cpp
#include "Network.h"
class MAC;
Network::Network(MAC mac) {
mlme = mac.getMLME();
}
【问题讨论】:
标签: c++ object reference share initializer-list