![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| sol78 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 7.7.2007 Репутация: 1 Всего: 0 |
Помогите, плиз, не могу понять, почему автоматически не вызывается оператор кастинг
Я пишу свой класс String String.h
и класс SubString SubString.h
вызываю так:
И еще вопрос в данный момент SubString это public class c public contrustor Что лучше использовать, для того чтобы закрыть SubString с внешней стороны, но чтоб он оставался открытым для String? friend class, inner или что еще? |
||||||
|
|||||||
| just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 2 Всего: 10 |
А собственно зачем нужен еще класс SubString? На мой взгляд и одного String хватит... Зачем же такие сложности... Да и вообще зачем еще один велосипед писать? (:
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
у класса String определён operator()? если нет, то этот кусок кода не логичен |
|||
|
||||
| sol78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 7.7.2007 Репутация: 1 Всего: 0 |
JackYF,
конечно - SubString& operator()(const char*); just_geek, в целях обучения |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
а какой текст ошибки?
Вроде правильно у тебя |
|||
|
||||
| sol78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 7.7.2007 Репутация: 1 Всего: 0 |
Fazil6,
C:\Documents and Settings\Irina\My Documents\String\Test.cpp(18) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class SubString' (or there is no acceptable conversion) |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
sol78,
единственное, что приходит на ум в данной ситуации - это то, что в месте
не видно полного описания твоего SubString. Видимо у тебя есть хедер в котором описан String и его ты подключаешь, но там только forward decl для класса SubString |
|||
|
||||
| sol78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 7.7.2007 Репутация: 1 Всего: 0 |
Fazil6,
совершенно верно, ошибка была там, спасибо! Только вот что у меня класс SubString не идет, голову поломала...как его лучше спроектировать, известно только что он должен обеспечивать следующее:
У меня есть оператор (): SubString& operator()(const char*); const SubString& operator()(const char*)const; У меня вопрос, как лучше проверить является ли субстринг частью стринга в операторе () или в самом конструкторе субстринг? при условии что если не является, нужно что то делать...не знаю дефолтний конструктор? для реализации cout<< str1("this")+"or that"; //this or that у меня есть оператор кастинг, благодаря ему печатеется стринг, а нужно чтоб субстринг, как ето сделать? |
|||
|
||||
| vadiml |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 2 Всего: 7 |
посмотри в исходниках Qt ( в Qt4 -- QtCore -> qstring.h/cpp, qbytearray.h/cpp )
там такое уже всё сделано |
|||
|
||||
| sol78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 7.7.2007 Репутация: 1 Всего: 0 |
как и где посмотреть? |
|||
|
||||
| sol78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 7.7.2007 Репутация: 1 Всего: 0 |
нашла, но мало что понятно
|
|||
|
||||
| Lycifer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
При перегрузки () в string ты возврощается SubStrign?
Как это в потоки вывода помещается? А вообще нужон перегрузить +, = . для решения: const String str1("this the string exemple"); cout<< str1("this")+"or that"; //this or that cout<< str1("that")+"or this"; //or this str1("this")=a;//error-str1 is const |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
| sol78 |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 7.7.2007 Репутация: 1 Всего: 0 |
обидно слушать (((. Я думаю что от сюда хорошие стороны дизайна не видны... Вот столкнулась с очередной проблемой: Класс Стринг
в субстринге
использую так:
|
||||||||
|
|||||||||
| sol78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 7.7.2007 Репутация: 1 Всего: 0 |
Разве проблема совсем не разрешимая?
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |