Параметр функции шаблона - PullRequest
0 голосов
/ 15 августа 2011

редактировать : Решено.Была просто глупая ошибка определения порядка ....

Итак, у меня есть функция, которая выглядит следующим образом: в заголовке класса 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', используемый в описателе вложенного имени

Любая помощь будет очень полезна.

1 Ответ

1 голос
/ 15 августа 2011

Звучит как случайность в пространстве имен Gloabl, поэтому вы должны называть его так: Global::random.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...