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

Модификатор const в аргументах функций - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ не могу понять ошибку http://www.cyberforum.ru/cpp-beginners/thread334565.html
Народ, здарова, сижу над классами, конкретно наследование классов! Компилятор выдает ошибку: Unit1.cpp(143): E2285 Could not find a match for 'Body::Body(char *,shape,color,material)' Объясните почему, ведь, вроде правильно. Код ниже: #include<iostream.h> #include<math.h> #include<conio.h> #include<string.h>
C++ паузы между wav файлами Добрый день ,есть загвоздка с воспроизведением звуковых файлов ,воспроизводя поочередно их ,образуется довольно заметная пауза : sndPlaySound("file_0.wav",SND_SYNC); sndPlaySound("file_1.wav",SND_SYNC); sndPlaySound("file_2.wav",SND_SYNC); Так как звуковой сигнал в них длится около 750 milliseconds, а сам файлы длиной около 1250 milliseconds Есть вариант делать так : ... http://www.cyberforum.ru/cpp-beginners/thread334564.html
C++ отключение клавиши
Всем привет! Как можно отключить определенную клавишу в функции GetAsyncKeyState? приведите пожалуйста примеры?
C++ Как long перевести в char?
У меня дата и время в формате long пишу так sprintf(buf, "%d", p); MessageBoxA(NULL, buf, "information", MB_OK); p это указатель на структуру long, long - дата, время получаю 0. пишу под win32
C++ Структурированный в объектно-ориентированный http://www.cyberforum.ru/cpp-beginners/thread334525.html
Доброго времени суток! В чем собственно моя проблема. Есть задание курсовой роботы (миниатюры), есть исходник программы написанный мною (прилагаю). Но программу надо написать двумя способами, используя структурированный подход и объектно-ориентированный. Со структурированным я вроде справился, хотя если есть тут проблемы или вопросы просьба ткнуть носом. Как мне переделать программу во второй...
C++ Как создать переменную из консоли Есть функция void createStream(string filename) { OutputStreamPtr stream(OpenSound(device, filename, true)); } Нужно написать функцию, которая будет создавать поток для аудио, но только не с переменной(или как она называется) stream, а с другим названием. То бишь при первом вызове функции createStream она будет как вышеописанная, а при втором, например, void createStream(string... подробнее

Показать сообщение отдельно
Bers
Заблокирован

Модификатор const в аргументах функций - C++

19.07.2011, 22:29. Просмотров 3471. Ответов 31
Метки (Все метки)

Постоянно путаюсь в этих константах. Как писать грамотнее?

Вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
     template<typename TypeT>  
void TLinePointer<TypeT>::operator = (TypeT* pObject)  //функция не меняет аргумент
{                               //по идее, просится const
    if(pObject==0) { Release(); return; }
    if(mp_Pointer != pObject)  
    {  
        Release();
        mp_Pointer = pObject; 
        mp_CounterLink=new int; 
        *mp_CounterLink=1;
        pObject=0; 
    }
}
Или вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
     template<typename TypeT>  
void TLinePointer<TypeT>::operator = (const TypeT* pObject) 
{
    if(pObject==0) { Release(); return; }
    if(mp_Pointer != pObject)  
    {  
        Release();
        TypeT* TempPointer = const_cast<TypeT*>(pObject); 
                                                      //приходится кастовать, потому что
        mp_Pointer = TempPointer;      //нельзя неконстантному указателю 
                                                      //присвоить константный напрямую
        mp_CounterLink=new int; 
        *mp_CounterLink=1;
        pObject=0; 
    }
}
Интуиция мне подсказывает, что второй вариант более правильный (хотя и приходиться совершать больше движений)

А что подскажут уважаемые эксперты? Или может быть есть ещё какие то варианты?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru