2017-12-25 10 views
-1

는 지금, 나는 그래서 중첩 된 클래스가 :new()를 사용하여 중첩 클래스 내의 메소드를 호출하려면 어떻게해야합니까?

class Outer{ 

public: 
    class Inner{ 

    public: 
     void display(){ 
      cout << "You are in inner class" << endl; 
     } 
    }; 
    void display(){ 
     cout << "You are in outer class" << endl; 
    } 
}; 

내가 각 클래스 Outer와의 인스턴스를 만들 필요가 Inner 그래서 그들의 display() 각각의 방법을 호출 할 수 있습니다. 내 요구 사항의 일부로 호출하려면 new을 사용해야합니다. 나는 Inner 클래스에 같은 일을 문제가 있어요,

Outer *pOuter = new Outer(); 
pOuter->display(); 

하지만 : 난 너무로 그 방법에 Outer 클래스 벌금과 포인트를 호출 할 수 있습니다. 시도 :

Outer:Inner *pInner = new Outer:Inner(); 
pInner->display(); 

그러나 작동하지 않습니다. 그래서 new을 사용하면서 내부 메소드를 호출하기 위해 내가 무엇을 할 수 있는지 궁금합니다.

+1

'Inner'의 정규화 된 이름은'Outer :: Inner'입니다. 그리고'pOuter : Inner'는 어리 석다. – StoryTeller

+0

_ 작동하지 않습니다. 많은 세부 사항입니다. –

+0

전문 용어에 관해서는 약간의 설명이 있습니다. Java는 C++에서 지원하지 않는 특별한 의미의 외부 및 내부 클래스를 가지고 있습니다. 제목에서와 마찬가지로 C++의 가장 좋은 용어는 ** 중첩 클래스 **입니다. –

답변

0

를 사용하여 완전한 경로 :

Outer::Inner* p = new Outer::Inner; 
p->display(); 
delete p; 

포인터없이 :

Outer::Inner o; 
o.display(); 

또는 기능 static를 표시하고 전화 :

Outer::Inner::display(); 

말했다되고 그건-이기 때문에, 클래스 대신 (Outer) 네임 스페이스에 더 적합합니다.

관련 문제