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

Странное поведение синонимов классов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить значение выражния http://www.cyberforum.ru/cpp-beginners/thread1308255.html
Задачи надо переписывать!!!! Я понимаю что это легко но не понимаю как решать с max! пожалуйста помогите !
C++ Реализовать запись данных в файл Написать программу для организации работы сети магазинов, у которых есть общий склад. Для всех магазинов сети есть один общий список товаров, которые могут в нем продаваться, но их наличие и количество в магазине отличается. Реализовать такие возможности- продажа товара и возможность вывода данных о продажах по указанному магазину сети. Реализовать запись данных в файл ..................... http://www.cyberforum.ru/cpp-beginners/thread1308248.html
C++ Удаление всех минимальных элементов из массива
Прошу, помогите исправить функцию. :scratch: Есть задача: удалить из массива все элементы, равные минимальному элементу массива. (Описать соответствующую функцию) И проблема: вместо удаления минимальных элементов, удаляются элементы с нечетными номерами. Кажется, алгоритм правильный. Все перерыла и все перепробовала уже, в итоге все равно выводится ересь. Вот моя функция: void delete_min(int...
Описать структуру элемента двунаправленного линейного списка C++
Опишите структуру элемента двунаправленного линейного списка, в котором должны храниться Ф.И.О. студента и год его рождения.
C++ Найти произведение элементов массива, удовлетворяющих условию http://www.cyberforum.ru/cpp-beginners/thread1308239.html
Одномерный массив Х(8) задать в программе. Найти произведение элементов, удовлетворяющих условию 0<tg(xi)<1, а также сумму положительных. #include "stdafx.h" #include <iomanip> #include <math.h> #include <iostream> using namespace std; void main() {double x,s=0,pr; int i; for (i=0; i<8; i++){
C++ Поменять местами буквы в слове Дано слово. Поменять местами первую букву из букв "а" и последнюю из букв "о". Учесть возможность того, что таких букв в слове может не быть. P.S. желательно через <stdio.h> зарание благодарю):) подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2785 / 1431 / 393
Регистрация: 18.10.2014
Сообщений: 2,627
23.11.2014, 11:58     Странное поведение синонимов классов
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
хотя по сути Type* и P_Str это один и тот же тип...
Ну так речь-то в данном случае идет не о 'Type*' и 'P_Str', а о 'const Type*' и 'const P_Str'. А это уже совсем разные типы.

Тип 'const P_Str' эквивалентен типу 'Type* const'. А это совсем не то же самое, что 'const Type*'.

Как это побороть? Перестать заниматься такой ерундой, как сокрытие указательных типов за typedef именами. Это - плохая практика. Убрать нафиг этот 'P_Str' и забыть про него навсегда. Везде писать открытым текстом: 'Type *', 'const Type *' или 'Type *const' и т.д. и т.п., чтобы сразу было видно, что именно имеется в виду.

В данном случае должно быть

C++
1
2
3
4
5
Type *Buf = NULL;
 
void SetValue(size_t Size, const Type* Val, size_t Len);
 
VRTSmartStr(const Type* Val, size_t Size = 0);
P.S. Отдельные вопросы вызывают вот эти #define. А чем typedef не угодил?

P.P.S. А это что за ужас, летящий на крыльях ночи?

C++
1
operator VRTSmartStr<Type>&()const { return *(VRTSmartStr<Type>*)this; }
Кому и зачем такое извращение понадобилось?
 
Текущее время: 06:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru