C ++ 데코레이터-제대로 작동하지 않음

조립식 쇠지레

첫 번째 문제 해결

아래 답변에서 말했듯이, 나는 잘못 썼습니다.

#ifndef ICETOWER_H
#define ICETOWER_H

내 C ++ 코드에 여전히 문제가 있습니다.

기본 타워를 2 * 비용으로 아이스 타워로 업그레이드하기 위해 데코레이터 패턴을 구현했습니다. 그러나 내가 그것을 실행할 때 그것은 장식 된 후에도 두 타워에 대해 동일한 사양을 표시합니다. 누구나 내가 뭘 잘못했는지 알 수 있습니까?

다음은 파일입니다.

tower.h

#ifndef __TOWER_H__
#define __TOWER_H__

#include <iostream>
#include <string>
using namespace std;

class Tower {

private:

    string type;
    string effect;
    int cost;
    int sellTower;
    int damage;
    int range;
    int rate;

public:

    string getType() { return type; }
    string getEffect() { return effect; }

    int getCost() { return cost; }
    int getSale() { return sellTower; }
    int getDamage() { return damage; }
    int getRange() { return range; }
    int getROF() { return rate; }

    Tower();
    virtual ~Tower(){}
};

#endif __TOWER_H__

tower.cpp

#include "Tower.h"

Tower::Tower()
{
    // Tower Type
    this->type = "Basic";

    // Tower Special Effect
    this->effect = "None";

    // Tower Cost
    this->cost = 500;

    // Tower Sell Cost
    this->sellTower = 300;

    // Tower Damage inflicted
    this->damage = 50;

    // Tower Range (paths)
    this->range = 2;

    // Tower rate of fire
    this->rate = 0.5;
};

TowerDecorator.h

#ifndef __TOWERDECORATOR_H__
#define __TOWERDECORATOR_H__
#include <iostream>
#include <string>
#include "Tower.h"
using namespace std;

class TowerDecorator : public Tower {

private:

    Tower *decoratedTower;

public:

    TowerDecorator(Tower *decoratedTower)
    {
        this->decoratedTower = decoratedTower;
    }

    string type() { return decoratedTower->getType(); }
    string effect() { return decoratedTower->getEffect(); }

    int getCost() { return decoratedTower->getCost(); }
    int getSale() { return decoratedTower->getSale(); }
    int getDamage() { return decoratedTower->getDamage(); }
    int getRange() { return decoratedTower->getRange(); }
    int getROF() { return decoratedTower->getROF(); }

};

#endif __TOWERDECORATOR_H__

iceTower.h

#ifndef ICETOWER_H
#define ICETOWER_H

#include "TowerDecorator.h"

class IceTower : public TowerDecorator {

public:
    IceTower(Tower *decoratedTower) : TowerDecorator (decoratedTower){}

    int getCost(){return TowerDecorator::getCost() * 2;}
};

#endif __ICETOWER_H__

Driver.cpp

#include "Tower.h"
#include "TowerDecorator.h"
#include "IceTower.h"

void printTowerDetails(Tower* tower)
{
    cout << endl << "This is a " << tower->getType() << " Tower" << endl;
    cout << "Build Tower : " << tower->getCost() << " Coins" << endl;
    cout << "Sell Tower : " << tower->getSale() << " Coins" << endl;
    cout << "Tower Range : " << tower->getRange() << " paths" << endl;
    cout << "Tower Rate Of Fire : " << tower->getROF() << " p/s" << endl;
    cout << "Tower Special Effect : " << tower->getEffect() << "" << endl;
}

int main() {

    Tower *t1 = new Tower();

    printTowerDetails(t1);

    t1 = new IceTower(t1);

    printTowerDetails(t1);


}

출력 :

이미지 : http://i.imgur.com/Ws018iV.png

오류

Vlad / 모스크바

두 가지 이상의 심각한 오류가 있습니다. 첫 번째는 접미사가있는 매니페스트 상수의 정의를 확인 _H__하지만 접미사없이 정의하는 것입니다.

#ifndef __TOWER_H__
#define __TOWER__

#ifndef __TOWERDECORATOR_H__
#define __TOWERDECORATOR__

두 번째는 클래스 정의 뒤에 세미콜론을 넣는 것을 잊었다는 것입니다. TowerDecorator

class TowerDecorator : public Tower {
//...
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C ++ 데코레이터-제대로 작동하지 않음

분류에서Dev

데코레이터가 제대로 작동하지 않음

분류에서Dev

코 루틴이 제대로 작동하지 않음-Unity [C #]

분류에서Dev

C ++ If Else 문이 제대로 작동하지 않음

분류에서Dev

정규식이 제대로 작동하지 않음 C #

분류에서Dev

C-인쇄 배열이 제대로 작동하지 않음

분류에서Dev

C # if 및 콘솔이 제대로 작동하지 않음

분류에서Dev

Unity C # Instantiate 프리 팹이 제대로 작동하지 않음

분류에서Dev

JTable 필터 데이터가 제대로 작동하지 않음

분류에서Dev

정렬 기능이 제대로 작동하지 않음 (버블 정렬)-c

분류에서Dev

XML 용 C # LINQ Left Outer Join이 제대로 작동하지 않음

분류에서Dev

레일에서 제대로 작동하지 않는 데이터베이스에서 레코드 생성

분류에서Dev

모델이 예상대로 작동하지 않음 C #

분류에서Dev

C ++ : setw 및 setfill이 예상대로 작동하지 않음

분류에서Dev

데이터 테이블 작업 열이 제대로 작동하지 않음

분류에서Dev

사용자 지정 C ++ 쿼터니언 회전이 제대로 작동하지 않음

분류에서Dev

음역이 앞뒤로 제대로 작동하지 않음

분류에서Dev

C ++ iostream이 제대로 작동하지 않습니다.

분류에서Dev

C strstr이 제대로 작동하지 않습니다.

분류에서Dev

에코 cmd | 명령이 제대로 작동하지 않음

분류에서Dev

무작위 코드가 제대로 작동하지 않음

분류에서Dev

이온 리프레셔가 제대로 작동하지 않음

분류에서Dev

Barchart의 동적 데이터가 제대로 작동하지 않음 javaFX

분류에서Dev

D3 데이터 업데이트가 제대로 작동하지 않음

분류에서Dev

상태 데이터 필터링이 제대로 작동하지 않음-React (CRA)

분류에서Dev

Cinnamon 데스크톱이 제대로 작동하지 않음

분류에서Dev

중첩 된 For 루프 (C ++)가 제대로 작동하지 않음

분류에서Dev

C # ClickOnce ftp가 제대로 작동하지 않음

분류에서Dev

C # 계산기 빼기 제대로 작동하지 않음

Related 관련 기사

  1. 1

    C ++ 데코레이터-제대로 작동하지 않음

  2. 2

    데코레이터가 제대로 작동하지 않음

  3. 3

    코 루틴이 제대로 작동하지 않음-Unity [C #]

  4. 4

    C ++ If Else 문이 제대로 작동하지 않음

  5. 5

    정규식이 제대로 작동하지 않음 C #

  6. 6

    C-인쇄 배열이 제대로 작동하지 않음

  7. 7

    C # if 및 콘솔이 제대로 작동하지 않음

  8. 8

    Unity C # Instantiate 프리 팹이 제대로 작동하지 않음

  9. 9

    JTable 필터 데이터가 제대로 작동하지 않음

  10. 10

    정렬 기능이 제대로 작동하지 않음 (버블 정렬)-c

  11. 11

    XML 용 C # LINQ Left Outer Join이 제대로 작동하지 않음

  12. 12

    레일에서 제대로 작동하지 않는 데이터베이스에서 레코드 생성

  13. 13

    모델이 예상대로 작동하지 않음 C #

  14. 14

    C ++ : setw 및 setfill이 예상대로 작동하지 않음

  15. 15

    데이터 테이블 작업 열이 제대로 작동하지 않음

  16. 16

    사용자 지정 C ++ 쿼터니언 회전이 제대로 작동하지 않음

  17. 17

    음역이 앞뒤로 제대로 작동하지 않음

  18. 18

    C ++ iostream이 제대로 작동하지 않습니다.

  19. 19

    C strstr이 제대로 작동하지 않습니다.

  20. 20

    에코 cmd | 명령이 제대로 작동하지 않음

  21. 21

    무작위 코드가 제대로 작동하지 않음

  22. 22

    이온 리프레셔가 제대로 작동하지 않음

  23. 23

    Barchart의 동적 데이터가 제대로 작동하지 않음 javaFX

  24. 24

    D3 데이터 업데이트가 제대로 작동하지 않음

  25. 25

    상태 데이터 필터링이 제대로 작동하지 않음-React (CRA)

  26. 26

    Cinnamon 데스크톱이 제대로 작동하지 않음

  27. 27

    중첩 된 For 루프 (C ++)가 제대로 작동하지 않음

  28. 28

    C # ClickOnce ftp가 제대로 작동하지 않음

  29. 29

    C # 계산기 빼기 제대로 작동하지 않음

뜨겁다태그

보관