首先,我知道还有其他问题基本上与此问题相同,但没有一个答案似乎对我有用。我对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;
}
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 :(得分: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识别为类实例,而是将其识别为函数的声明。
答案 1 :(得分:0)
在调用名称函数时似乎忘记了括号:
your_warrior.warrior_name_function();
我还建议您只删除Warrior
类的析构函数:它没有任何要清理的东西。
答案 2 :(得分:0)
Warrior your_warrior(int health , int armor , int weapon);
这一行声明了一个函数named your_warrior
,它接受三个int
类型的参数,并返回一个Warrior
类型的对象。
如果删除这三个int
,它会更好用。 <g>
当然,在下一行添加函数调用的括号。