На gcc 4.6.2 всё работает, Visual Studio 12 2013 выдает ошибку компиляции:
Microsoft (R) Build Engine version 12.0.21005.1
[Microsoft .NET Framework, version 4.0.30319.18444]
...
nested.cpp(34): error C2676: binary '<<' : 'module_error::bad_config' does not define this operator or a conversion to a type acceptable to the predefined operator
Можно ли это как-то побороть?
Re: VS 2013, operator<< для вложенного класса-потомка включающего класса
Здравствуйте, godplayer, Вы писали:
G>nested.cpp(34): error C2676: binary '<<' : 'module_error::bad_config' does not define this operator or a conversion to a type acceptable to the predefined operator G>Можно ли это как-то побороть?
Вроде бы по стандарту необходимо реализовывать свободную функцию вне класса:
Здравствуйте, godplayer, Вы писали:
G>Всем привет. Есть такой код (nested.cpp):
G>[ccode] G>#include <iostream> G>#include <string> G>#include <sstream>
G>Можно ли это как-то побороть?
Сделать operator<<() членом класса base_exception?
Здравствуйте, frymode, Вы писали:
F>Здравствуйте, godplayer, Вы писали:
G>>nested.cpp(34): error C2676: binary '<<' : 'module_error::bad_config' does not define this operator or a conversion to a type acceptable to the predefined operator G>>Можно ли это как-то побороть?
F>Вроде бы по стандарту необходимо реализовывать свободную функцию вне класса:
F>
Здравствуйте, andyp, Вы писали:
A>Здравствуйте, godplayer, Вы писали:
G>>Всем привет. Есть такой код (nested.cpp):
G>>[ccode] G>>#include <iostream> G>>#include <string> G>>#include <sstream>
G>>Можно ли это как-то побороть?
A>Сделать operator<<() членом класса base_exception?
A>
A>class base_exception {
A>public:
A> base_exception const& operator<<(std::string const& str) const
A> { ex.m_what += str; return *this; }
A> std::string const& what() const { return m_what; }
A>private:
A> mutable std::string m_what;
A>};
A>
Да, была такая мысль, но я планировал ловить конкретные исключения-потомки base_exception: