2013-02-03 3 views
-4

의 별명은 어떻게 ProjectInstance 같은 기본적인 무언가로/별칭이 형식 정의를 할 수 있습니다기본 타입 정의/정적 변수

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

이 정적 클래스이고 때마다 짜증나는 캐스팅 네임 스페이스 +하여 호출.

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

ProjectInstance가있다 : 나는 어떤 종류의 별명이 점을 단순화 할 수 있습니다 어떻게 그래서 난 그냥

ProjectInstance->x=0; 

내가 원래이 라인을 따라 뭔가를 생각으로 그것을

참조 할 수 있습니다 ProjecType *에 캐스팅 된 StaticVariable의 별칭입니다.

NamespaceOne::NamespaceTwo::ClassName::StaticVariable 

StaticVariable은 BaseType의 인스턴스입니다. ProjectType은 BaseType을 확장하므로 ProjectType 클래스에 추가 변수 "x"가 있기 때문에 StaticVariable을 ProjectType으로 캐스팅합니다.

내가 피하려고하는 것 : 이 정적 변수에 액세스해야하는 각 클래스에서 포인터/함수를 선언합니다.

지금까지 해결책은 "네임 스페이스 사용"이었습니다. 이전에 알고 있었지만 지금까지는 가장 좋은 게시 솔루션입니다. 나는 그것을 줄일 수 있었다 "클래스 이름"클래스 안에 새 포인터를 작성하여

ClassName::ProjectStaticVariable->x=0; 

: 나는 다른 해결책을 가지고

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

:

그래서 우리는에 코드의 오리지널 라인을 절단 훨씬 더.

더 줄이려면 더 좋은 방법이 있습니까?

+0

"정적 클래스"란 무엇입니까? –

+0

Doh, 실수로 내 변수 이름을 StaticClass로 변경했습니다. StaticVariable을 말하려고했습니다. – Grapes

+0

왜 캐스팅 하시겠습니까? 'ProjectType *'타입의'StaticVariable'은 왜 이미 존재하지 않습니까? –

답변

0

전화 using directive?

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

무엇인가 잘못 했습니까? downvote를 설명해주세요 :) – billz

+0

-1. 변수를 typedefing하고 있습니다. – Nawaz

+0

누가 당신을 낙심 시켰는지 모르지만 실제로 변수를 "typedef"할 수 있습니까? – Grapes

1

당신은 몇 가지 기능을 사용할 수 있습니다

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

을 그리고로 사용 : 로컬

ProjectInstance()->x = 0; 
+0

나는 컴파일하는 동안 무언가를하려고 노력하고있다. 그렇지 않으면 그 클래스 안에 ProjectInstance 변수를 NamespaceOne :: NamespaceTho :: NamespaceThree :: StaticVariable에 대한 포인터로 선언 할 수 있습니다. – Grapes

+0

@Grapes : 컴파일 할 때'ProjectInstance-> x = 0;'하고 있나? 얼마나 정확하게? – Nawaz

+0

저는 오버 헤드를 실제로 추가하지 않는 솔루션을 찾고 있습니다. 귀하의 접근 방식이 수업에 추가 정보를 추가하고 크기를 늘리지 않습니까? – Grapes