Bonjour,

J'ai actuellement un namespace Utils avec des fonctions toutes seules.

En particulier, j'ai cette fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
int state = Utils::from_string<int>(str.substr(2));
Et là c'est le drame :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
fonction(Packet ("XX"));
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?