classe temporaire : étendre la durée de vie
bonjou, j'ai un petit problème avec mon essai de classe de formattage de chaine; j'essaye de faire la chose suivante
Code:
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:
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 ?