0

まず第一に、これと本質的に同じ質問が他にもあることを知っていますが、どの回答も私にとってはうまくいかないようです。私は一般的にC++とプログラミングにかなり慣れていないので、できるだけ簡単に説明してください、ありがとう.

簡単なテキスト ゲームを作成しようとしていて、いくつかのファイルがありますが、クラスのメソッドを使用しようとすると、式にクラス タイプが必要であるというエラーが発生します。

これがコードです。

main.cpp

#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include "Warrior.h"
using namespace std;


//main function
int main (void)
{
//title screen
cout<< " _____ _           _        _____         \n";
cout<< "|   __|_|_____ ___| |___   | __  |___ ___ \n";
cout<< "|__   | |     | . | | -_|  |    -| . | . |\n";
cout<< "|_____|_|_|_|_|  _|_|___|  |__|__|  _|_  |\n";
cout<< "              |_|                |_| |___|\n";
cout<< "\n\n       Enter any # to start \n ";  

int start;
anumber:
cin>> start;

if (start < 0 || start > 0)
{
    cout<< "\nWelcome to Sam Acker's simple rpg game!\n";
}

Warrior your_warrior(int health , int armor , int weapon);
your_warrior.warrior_name_function; //This is the line with the error


int exit;
cin>> exit;
return 0;
}

戦士.h

#include <string>
#include <iostream>
class Warrior
{
private:
int health;
int weapon;
int armor;
std::string warrior_name;

public:
int attack();
int warrior_name_function();

Warrior(int health , int weapon , int armor);
~Warrior();
};

戦士.cpp

#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include "Warrior.h"


int Warrior::warrior_name_function()
{
std::cout<< "What would you like to name you warrior?\n";
std::cin>> Warrior::warrior_name;
return 0;
}


int Warrior::attack()
{
return 0;
}



Warrior::Warrior(int health , int armor , int weapon)
{
 health == 100;
 armor == 1;
 weapon == 16;
}


Warrior::~Warrior()
{}
4

3 に答える 3

4

main()のこの行

Warrior your_warrior(int health , int armor , int weapon);

クラスのインスタンスを作成するのではなく、関数を宣言しているように見えますWarrior。このような変数の具体的な値を使用して呼び出して、変数を作成する必要があります

Warrior your_warrior(10,32,2);

または、いくつかの変数を作成し、それらの値を設定して関数に渡すこともできます。次に電話

your_warrior.warrior_name_function();

コンパイルエラーは、your_warriorをクラスインスタンスとしてではなく、関数の宣言として認識するためです。

于 2012-09-05T18:23:46.550 に答える
0
Warrior your_warrior(int health , int armor , int weapon);

named your_warriorこの行は、型の3つの引数を取り、型intのオブジェクトを返す関数を宣言しますWarrior

3つを削除すると、intはるかにうまく機能します。<g>

そしてもちろん、次の行に関数呼び出しの括弧を追加します。

于 2012-09-05T18:22:59.453 に答える
0

name 関数を呼び出すときに括弧を忘れたようです:

your_warrior.warrior_name_function();

クラスのデストラクタを単純に削除することもお勧めしますWarrior。クリーンアップするものは何もありません。

于 2012-09-05T18:14:18.873 に答える