Russian Qt Forum
Ноябрь 25, 2024, 21:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как наследовать printf(const char *, ...)?  (Прочитано 3377 раз)
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, чтобы в реализации метода использовать стандартный форматный вывод?

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

Пожалуйста, помогите.
Записан
Fat-Zer
Гость
« Ответ #1 : Февраль 28, 2013, 07:26 »

используй vprintf, как-то так: http://cpp.com.ru/shildt_spr_po_c/13/vprintf-vfprintf-vsprintf-vsnprintf.html
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Февраль 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, но обычно удобнее с ним
« Последнее редактирование: Февраль 28, 2013, 09:57 от Igors » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Февраль 28, 2013, 10:17 »

Ну или vprintf, тогда без buf, но обычно удобнее с ним
Лучше snprintf/vnsprintf.
Записан
Aleksey
Гость
« Ответ #4 : Февраль 28, 2013, 19:50 »

Fat-Zer, Igors и Old!  Огромное вам спасибо за ответы!
Все помогло, все работает!  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.121 секунд. Запросов: 23.