редактировать : Решено.Была просто глупая ошибка определения порядка ....
Итак, у меня есть функция, которая выглядит следующим образом: в заголовке класса Action :
template <class Attacker, class Defender>
static int attack_result (Attacker A, Defender D) {
//<snip>
if (random(100) < res)
return 1;
//etc.
}
И я получаю это при компиляции:
ошибка: нет аргументов для «random», которые зависят от параметра шаблона, поэтому должно быть доступно объявление «random» note:(если вы используете '-fpermissive', G ++ примет ваш код, но разрешение на использование необъявленного имени не рекомендуется)
Функция random () объявлена в статическом классе с именем Global примерно так:
extern float random(int);
Я вызываю Action :: attack_result (...) из классов, называемых NPC и Player оба из которых получены из класса Creature .Я не думаю, что это жизненно важная информация, но я упомяну ее в случае, если это так.Параметры для Action :: attack_result относятся к классу Creature.
Я понимаю, почему возникает эта ошибка, но я не уверен, как ее исправить.Я попытался объявить Global в заголовке Action, я попытался возиться с ключевым словом "using" ... Я не могу так:
if (this->random(100) < res)
, потому что я получаю следующую ошибку (Creature, NPC,Плеер статичен [и должен быть]):
ошибка: 'this' недоступно для статических функций-членов
Going Global :: random (100) также не работает:
ошибка: неполный тип 'Global', используемый в описателе вложенного имени
Любая помощь будет очень полезна.