Форум программистов, компьютерный форум 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> зарание благодарю):) подробнее

Показать сообщение отдельно
MrAndrey_ka
 Аватар для MrAndrey_ka
77 / 77 / 2
Регистрация: 13.05.2009
Сообщений: 536
Записей в блоге: 1
23.11.2014, 16:31  [ТС]     Странное поведение синонимов классов
да но так вылазит следующая проблема:
елси написать
C++
1
2
3
inline friend TSmartString operator + (const P_Str Val1, const TSmartString& Val2);
template <class Type2>
inline friend TSmartString operator + (const Type2 Val1, const TSmartString& Val2);
то
GT2 = L"qqqq"+GT2;
GT2 = B+GT2;
в обеих случаях произойдет вызов первого оператора
а вот если
C++
1
2
3
inline friend TSmartString operator + (const Type* Val1, const TSmartString& Val2);
template <class Type2>
inline friend TSmartString operator + (const Type2 Val1, const TSmartString& Val2);
то один вызовет верхний а второй нижний, и даже то что это приведет к тем же результатам, то по времени выполнения это совсем разные вещи
и чтобы перекрыть это поведение во втором случае придется писать еще 2 оператора
inline friend TSmartString operator + (Type* Val1 const, const TSmartString& Val2);
и
inline friend TSmartString operator + (Type* Val1, const TSmartString& Val2);

а это 3 идентичных функции с одинаковым кодом, и тоже самое придется делать для остальных операторов =, +=, << что вовсе не к месту.

Вообще то данный принцип подсмотрел у того же CString

Добавлено через 21 минуту
помогло следующее:
typedef typename Type* P_Str;
typedef typename const Type* PС_Str;
P_Str Buf = NULL;

void SetValue(size_t Size, PС_Str Val, size_t Len);

VRTSmartStr(PС_Str Val, size_t Size = 0);
 
Текущее время: 09:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru