Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Aleksey от Февраль 28, 2013, 06:28



Название: Как наследовать printf(const char *, ...)?
Отправлено: Aleksey от Февраль 28, 2013, 06:28
Здравствуйте.

Есть класс:
Код:
class MyClass {
public:
    virtual void MyDebugMsg(const char * s, ...);
    void Method1(int v) {MyDebugMsg("The value is %d. \n", v); }
};

И его наследник, в котором мне нужно реализовать печать в мою консоль:
Код:
class MyMainClass : public MyClass {
    void MyDebugMsg(const char *s, ...) { /*?????*/ }
    void Test() {Method1(12345); }
};

Как мне получить все множественные параметры MyDebugMsg, чтобы в реализации метода использовать стандартный форматный вывод?

Пока получается только напечатать строчку, а вместо чисел - мусор.

Пожалуйста, помогите.


Название: Re: Как наследовать printf(const char *, ...)?
Отправлено: Fat-Zer от Февраль 28, 2013, 07:26
используй vprintf, как-то так: http://cpp.com.ru/shildt_spr_po_c/13/vprintf-vfprintf-vsprintf-vsnprintf.html


Название: Re: Как наследовать printf(const char *, ...)?
Отправлено: Igors от Февраль 28, 2013, 09:54
Код
C++ (Qt)
#include <stdio.h>
 
void MyPrint( const char * format, ... )
{
char buf[1024];
va_list args;
va_start(args, format);
vsprintf(buf, format, args);
va_end(args);
 
printf("%s", buf);
}
 
Ну или vprintf, тогда без buf, но обычно удобнее с ним


Название: Re: Как наследовать printf(const char *, ...)?
Отправлено: Old от Февраль 28, 2013, 10:17
Ну или vprintf, тогда без buf, но обычно удобнее с ним
Лучше snprintf/vnsprintf.


Название: Re: Как наследовать printf(const char *, ...)?
Отправлено: Aleksey от Февраль 28, 2013, 19:50
Fat-Zer, Igors и Old!  Огромное вам спасибо за ответы!
Все помогло, все работает!  :)