ошибка: выражение должно иметь тип класса

Прежде всего, я знаю, что есть другие вопросы, которые по сути такие же, как этот, но ни один из ответов, похоже, не работает для меня. Я довольно плохо знаком с 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 errorint exit;
cin>> exit;
return 0;
}

Warrior.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();
};

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()
{}

0

Решение

Эта строка в main ()

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

похоже, что вы объявляете функцию, а не создаете экземпляр класса Warrior, Вы должны вызвать его с некоторыми конкретными значениями ваших переменных, как это, чтобы создать

Warrior your_warrior(10,32,2);

или даже лучше создать некоторые переменные, установить их значения и передать функции. Тогда позвони

your_warrior.warrior_name_function();

Ваша ошибка компиляции заключается в том, что он не распознает your_warrior как экземпляр класса, а как объявление функции.

4

Другие решения

Похоже, вы забыли скобки при вызове функции name:

your_warrior.warrior_name_function();

Я также хотел бы предложить, чтобы вы просто удалили деструктор для Warrior класс: там нечего убирать.

0

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

Эта строка объявляет функцию named your_warrior которые принимают три аргумента типа int и возвращает объект типа Warrior,

Если вы удалите три intс это будет работать намного лучше. <g>

И, конечно же, добавьте скобки для вызова функции в следующей строке.

0
По вопросам рекламы [email protected]