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

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

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

Показать сообщение отдельно
MrAndrey_ka
78 / 78 / 2
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 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);
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru