2011-04-25 2 views
0

이 경우 클래스 생성자에서클래스에서 변수를 선언하는 방법은 무엇입니까? 내가 다음 코드를 한

class one 
{ 
public: 
    typedef int (*funPtr) (void); 
    one() 
    { 
    // here I'm using map variable which is private. 
    } 
    ~one(){} 

private: 
    typedef map<int, funPtr> mMap; 
    mMap mapVar; 
}; 

지도가 선언되지 않은 것을 그 오류를 제공합니다. 누구든지 나를 도울 수 있습니까? 당신이 형태 맵의 변수 MMAP를 선언하고자하는 경우

+0

의견을 통해 우리는 당신이 성취하려고하는 것에 대해 서로 다른 견해를 가지고있는 것처럼 보입니다. 아마도 생성자 코드를 보여줄 수 있습니까? – Ben

+0

@Ben - 불쾌감은 없지만 개인 변수가없는 * "여기는 사적인지도 변수를 사용하고 있습니다."라고 말하면 "그지도가 선언되지 않았습니다"라는 오류가 발생했습니다 ... 그는'typedef '가 무엇인지 이해하지 못한다. –

답변

3

는 타입 정의는 당신이 단지는 어떤지도 알 수있는 컴파일러를 들어

map mMap; 
+0

그 이후로 코드를 편집 한 것으로 보이므로지도 mMap; – Ben

+0

+1 -하지만 #include 과 std 네임 스페이스를 언급 할 가치가 있습니다. – Steve314

1

을 할 것 ... 종류 ... 기본적으로 별칭을 정의 지도의 typedef는 처음 사용하기 전에 배치해야합니다.

+1

이것은 그의 문제를 해결하지 못할 것입니다. 그는 아무 변수도 선언하지 않았습니다 * –

+0

+1 그 주석 - 또는 그가 가지고있는 경우 멤버 변수가 아닌 생성자의 로컬 변수입니다 (표시되지 않음). – Steve314

1

아무데도 변수를 선언하지 않습니다. 일을 할 단순히 필요가 당신이 모든 typedef를 사용하는 것을 의미하지 않을 생각

typedef map<int, funPtr> mMap; 
mMap myMap; 

및 :

map<int, funPtr> mMap; 

당신은 실제 변수를 선언 사용 typedef를해야합니다

+0

+1 단순히 넣고 잘 말했다. 그 의혹은 매우있을 것 같다. mMap에 선 계류되어 있으면 회원이 만들 수 있음을 알 수 있습니다. –

관련 문제