在我的代码中,有时会出现一个类(例如AI),它是许多子类的接口,其名称都包含基类名称(例如AIFighter、AIMage、AIThief.)。唯一合乎逻辑的事情就是组织它:
struct AI
{
virtual void think()=0;
};
namespace AI {
struct Fighter : public AI
{
void think()
{
//attack something
}
};
struct Mage : public AI
{
void think()
{
//burn something
}
};
//...
}
int main()
{
AI * ai = new AI::Fighter; // It's my target
}但是它和我尝试过的任何其他想法(typedefs,内联名称空间,使用)都不起作用。有可能吗?它不仅在继承方面很有用,而且在围绕某个中心类构建的任何组中都是有用的。
发布于 2014-09-18 20:10:46
使名称空间名称小写。
发布于 2014-09-18 19:02:37
我不会用代码示例来解决您的问题。原因是,你显然违反了我们以一种特殊方式做事的理由。
您有一个名称空间AI,以及一个结构AI,它位于AI命名空间之外。
你的问题的答案,在任何合理的条件下,是重新命名一个或另一个。这只是一个糟糕的设计。
https://stackoverflow.com/questions/25919178
复制相似问题