静态变量的基本typedef /别名

时间:2013-02-03 08:19:34

标签: c++

我怎样才能将此类型命名/替换为更基本的内容,如ProjectInstance:

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

这是一个静态类,每次调用命名空间+它都会令人讨厌。

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

ProjectInstance->x=0;

我原本在想这些事情:

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

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

NamespaceOne::NamespaceTwo::ClassName::StaticVariable

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

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

到目前为止,解决方案是“使用命名空间”,而我之前已经意识到这一点,它是迄今为止发布的最佳解决方案。

因此我们将原始代码行剪切为:

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

我有另一个解决方案:

 ClassName::ProjectStaticVariable->x=0;

通过在“ClassName”类中创建一个新指针,我能够将其剪切得更多。

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

2 个答案:

答案 0 :(得分:1)

您可以使用某些功能:

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

并将其用作:

ProjectInstance()->x = 0;

答案 1 :(得分:0)

在本地拨打using directive

using namespace NamespaceOne::NamespaceTwo::NamespaceThree;
// do something to StaticVariable