类函数语法混乱
Class Function Syntax Confusion
我有以下功能:
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;
但是编译器告诉我缺少参数列表。我不想在调用中重新输入参数,因为它们已经为玩家定义过了。我想我上面的电话就够了。我该如何改变它,让它能够识别玩家已经拥有的特征?
您只需要为函数指定正确的参数数量和类型:
基于函数定义:
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
关键是您的MUST
提供了正确的参数数量和类型。
您在
中提供的参数Player Derek("Derek", 2, 0, 6, rollD);
是传递给类Player
的构造函数的参数。它们与函数calcInitiative
的实参完全没有关系。您的calcInitiative
,如所写,有自己的,独立的一组参数。每次调用calcInitiative
时都必须指定这些参数。没有别的办法。
如果你是写Player
类的人,那么你应该已经理解它了。如果您想编写calcInitiative
,使其可以在没有任何参数的情况下调用,那么您应该完全这样做。但是你声明它为
calcInitiative(string name, int Dex, int Mod, int Lvl, int& diceRoll)
这意味着它需要参数
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 助记符和指向成员语法的指针
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 如何克服提升精神AST混乱
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 单独定义模板化嵌套类方法的正确语法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 使用基类指针调用基类的值构造函数的语法是什么?
- 很好的语法来获取对向量/数组数据的大小引用?
- C++语法运算符功能?
- C++使用 rand 定义函数语法
- std::result_of语法混乱
- deque的语法混乱.这个语法是什么意思
- 类函数语法混乱