C++ 类函数语法混乱

C++ 类函数语法混乱,c++,class,syntax,C++,Class,Syntax,我有以下功能: int Player::calcInitiative(string name, int Dex, int Mod, int Lvl, int& diceRoll) { int Init = 0; Init = (Lvl/2) + Dex + Mod + diceRoll; return Init; } 在其他地方,我实例化了如下几个对象: Player Derek("Derek", 2, 0, 6, rollD); 我现在想使用该函数,因此尝试: Derek.c

我有以下功能:

int Player::calcInitiative(string name, int Dex, int Mod, int Lvl, int& diceRoll) {

int Init = 0;

Init = (Lvl/2) + Dex + Mod + diceRoll;

return Init;
}
在其他地方,我实例化了如下几个对象:

Player Derek("Derek", 2, 0, 6, rollD);
我现在想使用该函数,因此尝试:

Derek.calcInitiative;

但是编译器告诉我缺少参数列表。我不想在调用中重新键入参数,因为它们已经为播放器定义了,如上所述。我想我的上述电话就足够了。如何更改它,使其能够识别玩家已有的特征?

您只需为函数指定正确的参数数量和类型:

int Player::calcInitiative(string name, int Dex, int Mod, int Lvl, int& diceRoll) {

int Init = 0;

Init = (Lvl/2) + Dex + Mod + diceRoll;

return Init;
}
根据功能定义:

 calcInitiative(string name, int Dex, int Mod, int Lvl, int& diceRoll) 
它要求您传递
string,int,int,int,int
类型参数

 Derek.calcInitiative;
应该是:

//calling outside class scope
Derek.calcInitiative(getName(), getDex(), getMod(), getLvl(), getDiceRoll());
//^^assume that get*() are getters and your class members are private

关键是
必须提供正确数量和类型的参数

中提供的参数

Player Derek("Derek", 2, 0, 6, rollD);
是传递给类
Player
的构造函数的参数。它们与function
calInitiative
的参数绝对没有关系。您的
CANCINITIATIVE
在编写时有自己独立的参数集。每次调用
calcinitivative
时,都必须指定这些参数。这是没有办法的

如果你是编写class
Player
的人,那么你应该已经理解了。如果您想编写
calcinInitiative
,这样它就可以在没有任何参数的情况下调用,那么您应该完全做到这一点。但你宣布它是

calcInitiative(string name, int Dex, int Mod, int Lvl, int& diceRoll) 

这意味着它需要参数。

如果要使用成员变量,请使用成员变量,不要为函数的参数操心。或者对不带参数的函数实现重载,以成员变量作为参数调用参数化函数。