Problème de namespace + problème stringstream
Bonjour,
J'ai actuellement un namespace Utils avec des fonctions toutes seules.
En particulier, j'ai cette fonction :
Code:
1 2 3 4 5 6 7 8
| template <typename T> T from_string (string & str, bool convert = false)
{
istringstream iss (str);
T t;
convert ? (iss >> hex >> t) : (iss >> t);
return t;
} |
Qui fonctionne très bien.
Pourtant, dans une de mes classes, je fais :
Code:
int state = Utils::from_string<int>(str.substr(2));
Et là c'est le drame :
Code:
error: no matching function for call to 'from_string(std::string, bool)'
Comment peut-il ignorer le Utils:: juste devant ?
Deuxième problème, voici une classe toute bête :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Packet
{
public:
explicit Packet (string packet) { _stream << packet; }
template<class T> Packet & operator<< (T val)
{
_stream << val;
return *this;
}
string to_string () const { return _stream.str(); }
private:
std::ostringstream _stream;
}; |
J'ai les erreurs suivantes lorsque je veux faire :
Code:
fonction(Packet ("XX"));
Code:
1 2 3 4 5 6
| ios_base.h|790|error: 'std::ios_base::ios_base(const std::ios_base&)' is private|
iosfwd|47|error: within this context|
iosfwd|71|note: synthesized method 'std::basic_ios<char, std::char_traits<char> >::basic_ios(const std::basic_ios<char, std::char_traits<char> >&)' first required here |
streambuf|770|error: 'std::basic_streambuf<_CharT, _Traits>::basic_streambuf(const std::basic_streambuf<_CharT, _Traits>&) [with _CharT = char, _Traits = std::char_traits<char>]' is private|
iosfwd|63|error: within this context|
note: synthesized method 'Packet::Packet(const Packet&)' first required here | <== lorsque je fais comme le code juste au-dessus |
Très franchement je suis un peu paumé, après avoir essayé des tas de trucs.
Une idée ?