我正在学习设计模式和它周围的东西(特别是SOLID和Dependency inversion原理),看起来我正在失去一些东西:
遵循DIP规则,我应该能够通过不在类(组合)中创建对象,而是将对象引用/指针发送到类构造函数(聚合)来使类不那么脆弱.但这意味着我必须在其他地方创建一个实例:因此,具有聚合的一个类越灵活,另一个类就越脆弱.
请解释一下我错在哪里.
c++ design-patterns composition aggregation dependency-inversion
请在这里建议我一个提示:
class UIClass
{
public:
UIClass::UIClass();
};
#ifndef __PLATFORM__
#define __PLATFORM__
UIClass Platform;
#else
extern UIClass Platform;
#endif
Run Code Online (Sandbox Code Playgroud)
我包括这两次,得到:
LNK2005 - 已在.obj(MSVS13)中定义的平台.
你可以猜到,这个想法只是定义一次Platform.为什么#ifndef或#define失败?我该怎么解决这个问题?