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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
#1

Присваивание объекта базового класса наследуемому - C++

31.07.2013, 22:18. Просмотров 843. Ответов 6
Метки нет (Все метки)

Тут используется библиотека Qt, но вопрос не по ней, тему переносить не стоит!

Суть в том, что я из главного класса вынес в отдельный класс функции, которые отвечают за парсинг строки. Т.е. я сделал так
C++
1
class QMyString : public QString
Я хотел создать объект этого класса, присвоить туда какую-то строку (веб-страницу), вызвать метод к примеру getSomething() и получить нужное (раньше мне приходилось передавать параметром эту страницу, но т.к я собираю много данных со страницы, удобнее раз присвоить и дальше просто вызывать методы). Проблема в том, что у меня не получается присвоить объект базового класса объекту наследнику
К примеру так
C++
1
2
QString str = "string";
QMyString mystr = str;//error
Как можно решить этот вопрос? Может у меня плохая структура и следует сделать как-то лучше? Или перегрузить оператор присваивания?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2013, 22:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Присваивание объекта базового класса наследуемому (C++):

Указатель на объект базового класса и адрес объекта производного класса - C++
Пример кода: class Class1 { public: Class1(int x) { j = new int; *j = x; } ~Class1() {delete j;}

Реализовать оператор= для присваивания объекта класса-потомка объекту базового класса - C++
Есть два класса A и B, причем класс B является потомком A. Как реализовать следующее: obj_A = obj_B и obj_B = obj_A? Добавлено через 9...

Использование перегруженного оператора ввода/вывода в поток базового класса для объекта производного класса - C++
Здравствуйте! Можно ли использовать перегруженный оператор ввода/вывода в поток из базового класса для объекта производного класса, если...

Присваивание объекта класса ofstream - C++
Задача стоит в том, что нужно передать объект класса ofstream конструктору анонимного объекта (допустим, класса Store) и, как следствие,...

Как используя закрытое наследование использовать 2 объекта базового класса? - C++
Доброго времени суток. Учусь по книге "Прата С. Язык программирования C++. Лекции и упражнения. Не могу понять упражнение...(глава 14,...

Создание полиморфного объекта, зачем создавать указатель на объект базового класса? - C++
Зачем создавать указатель на объект базового класса: Base *A = new Derived Если можно сделать так: Derived *A = new Derived

6
Fyret
185 / 171 / 13
Регистрация: 30.07.2013
Сообщений: 359
31.07.2013, 22:28 #2
Реализовать соответствующий конструктор, ибо они не виртуальны:

C++
1
QMyString( const QString& qStr );
0
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
31.07.2013, 22:32  [ТС] #3
Да, но это то же самое, что и присваивание. Т.е вариантов лучше нет?
0
Fyret
185 / 171 / 13
Регистрация: 30.07.2013
Сообщений: 359
31.07.2013, 22:34 #4
1) Это не то же самое.
2) Других вариантов просто нет.
0
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
31.07.2013, 22:41  [ТС] #5
Цитата Сообщение от Fyret Посмотреть сообщение
1) Это не то же самое.
2) Других вариантов просто нет.
1) Я про то, как туда "класть" эту строку, практически то же самое) Объект будет вообще один, каждый раз будет обычное присваивание. Или все равно разные вещи?
2) И тут может оставить в главном кассе или сделать что-то другое, более практичное
0
Fyret
185 / 171 / 13
Регистрация: 30.07.2013
Сообщений: 359
31.07.2013, 22:48 #6
Конечно, один, там же один объект и создается.
По поводу классов: не совсем правильно судить по Вашему краткому описанию, но делать обертку над классом ради нескольких функций парсинга я бы не стал. Или создать просто отдельный класс какого-то парсера, или несколько свободных функций в отдельном неймспейсе.
0
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
31.07.2013, 23:11  [ТС] #7
Цитата Сообщение от Fyret Посмотреть сообщение
Реализовать соответствующий конструктор, ибо они не виртуальны:

C++
1
QMyString( const QString& qStr );
Нельзя ли пример? только с =
0
31.07.2013, 23:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2013, 23:11
Привет! Вот еще темы с ответами:

Что делать если нужно знести информацию в 2 разных объекта базового класса при закрытом наследование - C++
Что делать если нужно знести информацию в 2 разных объекта базового класса при закрытом наследование? Например мне нужно держать скажем имя...

Вызов метода производного класса через обращение к методу базового класса - C++
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...

Перегрузка оператора >> для дочернего класса от базового виртуального класса - C++
Доброго вам времени суток! Программирую на С++ не давно, в связи с отсутствием должного времени на поиск ответа в глубинах учебников,...

Создание указателя типа базового класса на экземпляр производного класса - C++
Добрый день! Иногда видел коды, где создавался указатель типа базового класса на объект класса - наследника, для чего это может применяться?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru