gpt4 book ai didi

c++ - 模板函数参数

转载 作者:行者123 更新时间:2023-11-28 08:17:49 25 4
gpt4 key购买 nike

编辑:已解决。只是一个愚蠢的定义错误顺序....

所以我在名为Action 的类的 header 中有一个看起来像这样的函数:

template <class Attacker, class Defender>
static int attack_result (Attacker A, Defender D) {
//<snip>

if (random(100) < res)
return 1;

//etc.
}

我在编译时得到了这个:

错误:“random”没有依赖于模板参数的参数,因此“random”的声明必须可用注意:(如果您使用“-fpermissive”,G++ 将接受您的代码,但不允许使用未声明的名称)

函数 random() 在名为 Global 的静态类中声明如下:

extern float random(int);

我从名为 NPCPlayer 的类中调用 Action::attack_result(...),这两个类都派生自名为 Creature 的类 。我认为这不是重要信息,但我会提及以防万一。 Action::attack_result 的参数都是 Creature 类。

我知道为什么会抛出这个错误,但我不确定如何修复它。我尝试在 Action header 中声明 Global,我尝试乱用关键字“using”……我不能这样:

if (this->random(100) < res)

因为我得到以下错误(生物、NPC、玩家是静态的 [并且必须是]):

错误:“this”对于静态成员函数不可用

Going Global::random(100) 也不起作用:

错误:嵌套名称说明符中使用了不完整类型“Global”

任何帮助都会非常有用。

最佳答案

听起来像是 random 在 Global 命名空间中,所以你需要像这样调用它 Global::random.

关于c++ - 模板函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7061804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com