2014-11-29 3 views
2

안녕하세요 저는 헤더 파일에 클래스가 있습니다. 의 그것과 같다 가정 해 봅시다 :생성 된 클래스에 메소드 추가하기 C++

class MyClass 
{ 
    private: 
    int ID; 
    void method1(); 
    public: 
    MyClass(int ID){this->ID = ID;}; 
    void method2(); 
} 

편집 : 나는 모두가 MyClass에 같은 구조를 가지고있는 두 개체가 필요합니다 + 자신의 방법 (모두 중 일부는 어떤 매개 변수가 없으며 반환됩니다 있습니다 무효 - 같은 method1(),하지만 다른 구현). 또한 여기에 생성 된 새로운 메서드를 가리킬 수있는 형식을 정의해야합니다. 그래서 저는 그것들을 하나의 다른 유형의 함수로 전달할 수 있습니다. 마지막으로 필요한 것은 새로운 메서드에서 MyClass의 특성과 메서드에 액세스하는 것입니다.

+2

C++에서 우리는이 말도 안돼, 기존의 클래스 나 객체에 메소드를 추가하지 않습니다. 상속으로 기존 클래스에서 새 클래스를 만듭니다. –

+0

나는 상속보다 다른 방법이 있는지 묻는다. 그래서 당신 대답은 거기 있지 않다는 겁니까? – Dracke

+0

상속은 기존 객체 또는 클래스에 메소드를 추가하지 않습니다. 그래서 당신이 "또 다른"방법으로 의미하는 것이 명확하지 않습니다. 기존의 것에 메소드를 추가하는 한 가지 방법조차 존재하지 않습니다. –

답변

2

이 클래스를 변경하지 않고 기존 클래스에 새 메서드를 추가 할 수있는 방법이 없습니다. 당신이 풍부한 클래스는 단지 새로운 방법 방법을 추가로 작업 할 경우

, 당신이 할 필요가있다 : 당신이 머무르는 방법에서

class MyEnrichedClass : public MyClass { 
public: 
    MyEnrichedClass (int ID) : MyClass(ID) {} 
    void myNewFantasticMethod (...) { ... } 
}; 

당신이 당신의 기본 클래스의 모든 공용 및 보호 된 멤버에 액세스 할 수 (사적인 것들은 제외).

잘 정의 된 서명이 있고 특정 목적을 위해 메서드를 필요로하지만 동적으로 정의하려는 메서드를 알고 있다면 멤버로 함수 개체를 가질 수 있으며 메서드에서이 함수 개체를 호출 할 수 있습니다 또는 원하는 경우 함수 포인터). 그러나 귀하의 동적 기능은 개인 회원이나 보호 된 회원에게 액세스 할 수 없습니다.

+0

개인 물건에 액세스해야하는 경우이를 보호해야합니다. – Dracke

+0

예! 그게 다야! – Christophe

0

아마도 당신이 찾고있는 것은 상속입니다. 기본적으로 기본 클래스 (일반적으로 기본 클래스라고 함) 및 하위 클래스 (기본 클래스에서 멤버 및 함수를 상속 함)를 만듭니다. ChildClass에 그것이 유전 개의 기능, 그것에 기록되어, 다른 하나가 반면 이러한 예에서

// Base class 
class BaseClass 
{ 
public: 
    int GetNumber() { return 10; } 
}; 

// Child class 
class ChildClass: public BaseClass // public BaseClass means that this class inherits from other class 
{ 
public: 
    string GetString() { return "Your string"; } 
}; 

는 BaseClass로는, 하나의 기능을 갖는다. 다음은 그 예입니다.

BaseClass base; 
base.GetNumber(); // Base class only has 1 function 

ChildClass child; 
child.GetNumber(); // It has inherited function 
child.GetString(); // It also has its own function, which base class doesn't have 

이 여기에 상속에 대해 매우 깊이 자습서를 읽을 수 있습니다 http://www.cplusplus.com/doc/tutorial/inheritance/

관련 문제