尝试抛出异常时c ++模板函数错误

时间:2011-02-15 20:22:14

标签: c++ templates exception

我有一些代码,我试图在模板化方法中抛出自定义异常。当我尝试编译它时,我收到以下警告:

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 个答案:

答案 0 :(得分:6)

Invalid_State_Exception的声明移到Foo上方。

答案 1 :(得分:3)

您需要先定义Invalid_State_Exception ,然后将其投放到Foo::do_stuff

答案 2 :(得分:3)

将Invalid_State_Exception放在模板之前。