尝试将字符串作为 class 的参数传递,但它在 C++ 中被识别为字符数组
Trying to pass a string as an argument for a class but it is being recognized as an array of chars instead in C++
我在主函数中初始化 Warrior 对象时遇到问题
我的战士 Class 的代码如下
class Warrior{
public:
Warrior(const string& input_name, int& input_strength) :name(input_name), strength(input_strength) {};
string getname()const{
return name;
};
int getstrength(){
return strength;
};
void change_strength(int damg_taken){
strength -= damg_taken;
};
private:
string name;
int strength;
};
这是主要功能的部分代码
Warrior cheetah("Tarzan", 10);
Warrior wizard("Merlin", 15);
Warrior theGovernator("Conan", 12);
Warrior nimoy("Spock", 15);
Warrior lawless("Xena", 20);
Warrior mrGreen("Hulk", 8);
Warrior dylan("Hercules", 3);
主函数中的所有 Warrior 初始化都会导致如下错误:
错误:没有构造函数的实例 "Warrior::Warrior" 匹配参数列表参数类型是:(const char[7],int)
我在某处读到 C++ 中的字符串实际上是字符数组,这就是 warrior 初始化不起作用的原因,但我不知道如何更改构造函数以使程序运行。也不允许我更改主要功能,因为它是导师提供的。
问题不在于字符串。 const char[7]
将成功用于构建临时 std::string
s。
问题是您试图将 int
文字绑定到对非 const
的引用;你不能这样做。将 const int&
接受到您的构造函数中将修复您的程序。
但是,我建议更改您的构造函数以将其 int
s 设为 value,因为它不需要修改原件和 int
s小:
Warrior(const string& input_name, int input_strength)
// ^^^
: name(input_name)
, strength(input_strength)
{}
您要求在构造函数中引用非常量 int&
并提供 int
文字。该错误告诉您没有构造函数将 int
作为参数。按值传递 int 应该可以修复它。此外,C++ 中的字符串文字(引号之间的字符串)是一个以 null 结尾的 char 数组,而不是 std::string
,尽管它可用于构造一个,并且在这种情况下不会导致错误。
我在主函数中初始化 Warrior 对象时遇到问题
我的战士 Class 的代码如下
class Warrior{
public:
Warrior(const string& input_name, int& input_strength) :name(input_name), strength(input_strength) {};
string getname()const{
return name;
};
int getstrength(){
return strength;
};
void change_strength(int damg_taken){
strength -= damg_taken;
};
private:
string name;
int strength;
};
这是主要功能的部分代码
Warrior cheetah("Tarzan", 10);
Warrior wizard("Merlin", 15);
Warrior theGovernator("Conan", 12);
Warrior nimoy("Spock", 15);
Warrior lawless("Xena", 20);
Warrior mrGreen("Hulk", 8);
Warrior dylan("Hercules", 3);
主函数中的所有 Warrior 初始化都会导致如下错误:
错误:没有构造函数的实例 "Warrior::Warrior" 匹配参数列表参数类型是:(const char[7],int)
我在某处读到 C++ 中的字符串实际上是字符数组,这就是 warrior 初始化不起作用的原因,但我不知道如何更改构造函数以使程序运行。也不允许我更改主要功能,因为它是导师提供的。
问题不在于字符串。 const char[7]
将成功用于构建临时 std::string
s。
问题是您试图将 int
文字绑定到对非 const
的引用;你不能这样做。将 const int&
接受到您的构造函数中将修复您的程序。
但是,我建议更改您的构造函数以将其 int
s 设为 value,因为它不需要修改原件和 int
s小:
Warrior(const string& input_name, int input_strength)
// ^^^
: name(input_name)
, strength(input_strength)
{}
您要求在构造函数中引用非常量 int&
并提供 int
文字。该错误告诉您没有构造函数将 int
作为参数。按值传递 int 应该可以修复它。此外,C++ 中的字符串文字(引号之间的字符串)是一个以 null 结尾的 char 数组,而不是 std::string
,尽管它可用于构造一个,并且在这种情况下不会导致错误。