Форум программистов, компьютерный форум CyberForum.ru

Sprintf и классы - C++

Восстановить пароль Регистрация
 
Aleksanteri
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 5
06.10.2013, 19:16     Sprintf и классы #1
Уважаемые, нужна помощь.

Есть следующий класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
class tText {
    public:
        char *text;
        int x;
        int y;
        float R, G, B, A;
        tText(int _x, int _y, char *_text, 
            float _R, float _G, float _B, float _A):x(_x), y(_y), text(_text),
            R(_R), G(_G), B(_B), A(_A) { };
        void draw();
        void setText(char *string, double time);
};
И метод класса setText:
C++
1
2
3
void tText::setText(char *string, double time) {
    sprintf(this->text,"%s : %lf",string, time);
}
При компиляции выдает:
Unhandled exception at 0x5E43F8AC (msvcr110d.dll) in snake2d.exe: 0xC0000005: Access violation writing location 0x0032CA9C.

Если же у вас есть более элегантный и лаконичный способ перевода double/int в char*, прошу совета.
С меня лайки!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2013, 19:16     Sprintf и классы
Посмотрите здесь:

C++ sprintf и %
c++ , sprintf() и Дух Плюсов C++
Траблы с функцией sprintf C++
Ошибка с sprintf в C++ Opengl C++
printf sprintf не понятно C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
06.10.2013, 19:20     Sprintf и классы #2
точно при компиляции выдает?
где и как инициализируется указатель text?
Aleksanteri
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 5
07.10.2013, 11:57  [ТС]     Sprintf и классы #3
C++
1
2
3
4
double t=10.0;
char *d;
tText ttime(WINDOW_WIDTH/2,WINDOW_HEIGHT/2,"PAUSE!",0.0f,0.0f,1.0f,1.0f);
ttime.setText("Time is: ",t);
И соответственно в функции отрисовки
C++
1
ttime.draw();
Все компилится и работает, если не использовать метод setText(); Обычную строку он выводит, но если к ней нужно добавить double, то нет.

Простите если ответил неверно, т.к. конкретно в знании понятий я слабоват.

Добавлено через 16 часов 27 минут
Вверх, пожалуйста. Очень нужен хелп.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
07.10.2013, 12:17     Sprintf и классы #4
В вызове конструктора tText Вы инициализируете член text временной C-строкой "PAUSE!". Конструктор отрабатывает, строка уничтожается, указатель text указывает неизвестно куда. И Вы потом пытаетесь туда что-то записать.

Зачем вообще Вы в C++ коде используете C-строки и C-функции типа sprintf?
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
07.10.2013, 12:29     Sprintf и классы #5
если уж так хочется через *опу, то напиши

C++
1
2
char *pBuf = "PAUSE!";
tText ttime(WINDOW_WIDTH/2,WINDOW_HEIGHT/2, pBuf, 0.0f,0.0f,1.0f,1.0f);
Yandex
Объявления
07.10.2013, 12:29     Sprintf и классы
Ответ Создать тему
Опции темы

Текущее время: 00:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru