2011-07-28 5 views
1

내 임무 중 하나에서 전구를 포함하고 전구를 자유롭게 바꿀 수있는 램프를 C++로 작성하라는 요청을 받았습니다. CLamp에는 그 내부에 CBulb 순간이 있습니다. 클램프 클래스클래스를 포인터로 사용할 수 있습니까?

:

CLamp::CLamp(const CLamp& oldLamp) 
{ 
    bptr = new CBulb; 
    *bptr = *(oldLamp.bptr); 
} 

과 : 주에

CBulb *CLamp::ExchangeBulb(CBulb *theNewBulb) 
{ 
    CBulb *tmp = bptr; 
    bptr = theNewBulb; 

    return tmp; 
} 

:이 실험실을위한 솔루션의 일부입니다

CLamp lamp1(*some number*); 
CBulb *testbptr = new CBulb(*some other number*); 
CBulb *temp = lamp1.ExchangeBulb(testbptr); 
delete temp; 

그래서 뭐 CBulb *CLamp::ExchangeBulb(CBulb *theNewBulb)을한다 평균? ExchangeBulb은 (는) 회원 기능이 무엇입니까? *ClampCBulb 유형의 개체입니까? 미리 감사드립니다.

답변

2

클래스가 CLamp이고 클래스가 CBulb입니다.

"CBulb * CLamp :: ExchangeBulb (CBulb * theNewBulb)"의 의미는 무엇입니까?

그것은 정의 CBulb에 대한 포인터를 받아 CBulb

ExchangeBulb가 구성원 기능이란에 대한 포인터를 반환 ExchangeBulb라는 CLamp의 멤버 함수?

ExchangeBulbCLamp의 멤버 함수입니다. arg30에 CBulb에 대한 포인터가 필요합니다.

또한 * 클램프가 CBulb 유형의 개체입니까?

아니요.

나는 당신이 good C++ book

0
CBulb *CLamp::ExchangeBulb(CBulb *theNewBulb) 

ExchangeBulb이 .IT가 CBulb 클래스에 대한 포인터를 반환하고 argunent로 CBulb에 대한 포인터를 취 CLamp의 멤버 함수이다 읽어야하는 것이 좋습니다.

0

ExchangeBulb는 새 전구를 가져와 이전 전구를 교체하는 것을 목적으로하는 CLamp 클래스의 한 방법입니다. CBulb * temp = lamp1.ExchangeBulb (testbptr)를 호출 할 때 수행중인 작업; 전구 (일부 번호)를 새로 만든 전구 (다른 번호)로 교체하려고합니까?

ExchangeBulb는 CLamp의 멤버입니다. Lamp 만 전구를 교체 할 수 있기 때문에 명백한 이유가 있습니다. CBulb *는 CBulb 포인터를 반환한다는 것을 의미합니다.

0

ExchangeBulb는 CLamp의 함수입니다. 전구를 교체하고 이전 전구를 반환합니다.

또한 * 클램프가 CBulb 유형의 개체입니까?

아니요.

관련 문제