-4

我如何才能将其输入到更基本的东西中,例如 ProjectInstance:

((ProjectType*)NamespaceOne::NamespaceTwo::ClassName::StaticVariable)->x=0;

这是一个静态类,每次都通过命名空间+强制转换来调用它很烦人。

如何将其简化为某种别名,以便我可以将其称为

ProjectInstance->x=0;

我最初的想法是这样的:

#typedef ((ProjectType*)NamespaceOne::NamespaceTwo::ClassName::StaticVariable) ProjectInstance

其中 ProjectInstance 是转换为 ProjecType* 的 StaticVariable 的别名。

NamespaceOne::NamespaceTwo::ClassName::StaticVariable

StaticVariable 是 BaseType 的一个实例。ProjectType 扩展了 BaseType,我只是将 StaticVariable 转换为 ProjectType,因为 ProjectType 类中有一个附加变量“x”。

我要避免的事情:在我需要访问此静态变量的每个类中声明一个指针/函数。

到目前为止,解决方案是“使用命名空间”,虽然我之前知道这一点,但它是迄今为止最好的发布解决方案。

所以我们把原来的代码行剪成:

 ((ProjectType*)ClassName::StaticVariable)->x=0;

我有另一个解决方案:

 ClassName::ProjectStaticVariable->x=0;

通过在“ClassName”类中创建一个新指针,我能够进一步减少它。

有没有更好的方法可以进一步减少这种情况?

4

2 回答 2

1

您可以将某些功能用作:

ProjectType* ProjectInstance()
{
  return static_cast<ProjectType*>(NamespaceOne::NamespaceTwo::NamespaceThree::StaticVariable);
}

并将其用作:

ProjectInstance()->x = 0;
于 2013-02-03T08:24:05.613 回答
0

using directive本地打电话?

using namespace NamespaceOne::NamespaceTwo::NamespaceThree;
// do something to StaticVariable
于 2013-02-03T08:27:15.570 回答