我怎样才能将此类型命名/替换为更基本的内容,如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”类中创建一个新指针,我能够将其剪切得更多。
有没有更好的方法可以进一步减少这种情况?
答案 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