bonjou, j'ai un petit problème avec mon essai de classe de formattage de chaine; j'essaye de faire la chose suivante

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
int main(void)
{
	const char *f = format<>("int value : %d\n") & 12;
	printf("%s\n", f);
	return 0;
}
le probleme c'est que format<> qui contient ici la chaîne est un temporaire qui sera détruit après l'opération, et donc f pointe potentiellement sur du caca. Je me demande si vous avez des idées brillantes pour corriger ce problème; le but serait de réussir a prolonger la vie de la chaîne pour qu'elle aie le scope de la fonction...

la classe format :
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
17
18
19
20
21
22
23
24
25
26
27
28
template< size_t SIZE = 512 >
class format
{
	typedef char ARRAY[SIZE];
public:
	ARRAY m_format;
	char *m_pattern;
public:
	void findFormat()
	{
		while(m_pattern && *m_pattern && (m_pattern[1] == '%' || m_pattern[0] != '%'))
			m_pattern++;
		if(m_pattern && !*m_pattern)
			m_pattern = 0;
	}
public:
	format(const char *f)
	{
		strncpy(m_format, f, SIZE);
		m_pattern = m_format;
		findFormat();
	}
	~format()
	{
		//*m_format = 0;
	}
	operator const char*() { return m_format; }
};
l'opérateur & a peu d'importance

des idées brillantes ?