0

私はこのポケモンアプリケーションを持っています。これらのポケモンを「バトル」させたいのですが、ヘルスをポケモンクラスのプライベートセクションにある参照変数にしたいのです。C++ クラスで参照変数を初期化する方法がわかりません。私の投稿を読んでくれてありがとう。誰かが私を助けてくれることを願っています。

//
//  main.cpp
//  pokemon
//
//  Created by Frank Novello on 8/25/13.
//  Copyright (c) 2013 Frank Novello. All rights reserved.
//

#include <iostream>

using namespace std;
//<------------------------------------------------------------------------------------>
class Pokemon
{
public:
    Pokemon(){};
    ~Pokemon(){};

    void setName(string x){name = x;};
    string getName(){return name;};

    void setLevel(int x){level = x;};
    int getLevel(){return level;};

    void setHeight(int x){height = x;};
    int getHeight(){return height;};

    void setWeight(int x){weight = x;};
    int getWeight(){return weight;};

    void setHealth(int x){health = x;};
    int getHealth(){return health;};


    void displayStats()
    {
        cout << "pokemon: "      <<   name << endl;
        cout << "\t\t\tlevel: "  <<  level << endl;
        cout << "\t\t\thp: "     << health << endl;
        cout << "\t\t\theight: " << height << endl;
        cout << "\t\t\tweight: " << weight << endl;
    }

private:
    string name;
    int level;
    int height;
    int health;     //Want to make this a reference variable
    float weight;
};
//<------------------------------------------------------------------------------------------------->
class ElectricPokemon: public Pokemon
{
public:
    ElectricPokemon(){};
    ~ElectricPokemon(){};
    void attack()
    {
        cout <<"Shocked" << endl;
    }
private:
};
//<------------------------------------------------------------------------------------------------->
class WaterPokemon: public Pokemon
{
public:
    WaterPokemon(){};
    ~WaterPokemon(){};
private:
};
//<------------------------------------------------------------------------------>
class FirePokemon: public Pokemon
{
public:
    FirePokemon(){};
    ~FirePokemon(){};
private:
};
//<------------------------------------------------------------------------------------->
class PsycicPokemon: public Pokemon
{
public:
    PsycicPokemon(){};
    ~PsycicPokemon(){};
private:
};
//<------------------------------------------------------------------------------->

int main(int argc, const char * argv[])
{
    ElectricPokemon * pickachew = new ElectricPokemon();
    WaterPokemon * squirtle = new WaterPokemon();
    PsycicPokemon * kahdabra = new PsycicPokemon();
    FirePokemon * charmander = new FirePokemon();
    cout << "\n\t\t\t <-------------Pokedex------------->" << endl;
    bool quit = false;

    while (!quit) {

        cout << "Slect a Pokemon to view stats: "<< "\n\t\t 1-Pickachew" << "\n\t\t 2-Squirtle" <<  "\n\t\t 3-Charmander" <<  "\n\t\t 4-Kahdabra"<< endl;
        int x;
        cin >> x;

        switch (x) {
            case 1:
                pickachew -> setName("Pickachew");
                pickachew -> setLevel(1);
                pickachew -> setHealth(100);
                pickachew -> setHeight(1);
                pickachew -> setWeight(10);
                pickachew -> displayStats();
                break;
            case 2:
                squirtle -> setName("Squirtle");
                squirtle -> setLevel(1);
                squirtle -> setHealth(80);
                squirtle -> setHeight(1);
                squirtle -> setWeight(15);
                squirtle -> displayStats();
                break;
            case 3:
                charmander -> setName("Charmander");
                charmander -> setLevel(1);
                charmander -> setHealth(120);
                charmander -> setHeight(1);
                charmander -> setWeight(15);
                charmander -> displayStats();
                break;
            case 4:
                kahdabra -> setName("Kahdabra");
                kahdabra -> setLevel(60);
                kahdabra -> setHealth(800);
                kahdabra -> setHeight(6);
                kahdabra -> setWeight(150);
                kahdabra -> displayStats();
                break;
        }
        cout << "\n\n\t\t Would you like to select another Pokemon(y/n): " << endl;
        string choice;
        cin >> choice;

        if (choice == "n")
        {
            quit = true;

        }else quit = false;
    }

    cout << "Program Quiting..." << endl; return 0;
}
4

2 に答える 2

0

C++ では、キーワード を使用して、別のクラスまたはオブジェクト型からプライベート メンバー関数およびプロテクト メンバー関数にアクセスできますfriend。次のようなヘッダー ファイルに、プライベート メンバー関数または保護されたメンバー関数を含むクラスを含める必要があります。

class A {
  friend class B;
}

また、その逆もできます。したがって、クラス B はクラス A のフレンドになり、クラス A はクラス B のフレンドになることができます。

于 2013-08-31T22:37:54.053 に答える
0

の代わりにhealth変数を作成します。から派生したすべてのクラスでアクセスできるようになります。protectedprivatePokemon

于 2013-08-31T17:47:07.040 に答える