ошибка шаблонной функции c ++ при попытке вызвать исключение - PullRequest
2 голосов
/ 15 февраля 2011

У меня есть код, в котором я пытаюсь создать пользовательское исключение в шаблонном методе.Когда я пытаюсь скомпилировать его, я получаю следующее предупреждение:

there are no arguments to ‘Invalid_State_Exception’ that depend on a 
template parameter, so a  declaration of ‘Invalid_State_Exception’ must
be available 
note: (if you use ‘-fpermissive’, G++ will accept your code, but
allowing the use of an undeclared name is deprecated)

Я пока не смог найти способ обойти это.Будем признательны любому совету.Вот пример кода, объясняющего, что у меня есть (Foo.h):

 template <class T> class Foo
 {
     public:
         void do_stuff(T t)
         {
             if(bar == true)
             {
                 throw Invalid_State_Exception("FooBar error occurred");
             }
         }

      ....
};

class Invalid_State_Exception : public std::runtime_error
{
    public:
        Invalid_State_Exception(const std::string& msg) :
            std::runtime_error(msg) { }
};

Ответы [ 3 ]

6 голосов
/ 15 февраля 2011

Переместить объявление Invalid_State_Exception выше Foo.

3 голосов
/ 15 февраля 2011

Поместите исключение Invalid_State_Exception перед шаблоном.

3 голосов
/ 15 февраля 2011

Вам нужно определить Invalid_State_Exception перед тем, как добавит Foo::do_stuff.

...