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

Как вызвать другой констуктор из конструктора? - C++

Восстановить пароль Регистрация
 
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
13.03.2012, 18:39     Как вызвать другой констуктор из конструктора? #1
У меня есть класс, конструктор которого принимает как char * , так и std::string. Эту строку надо довольно долго обрабатывать и со std::string это делать гораздо проще. Вот хочется, чтобы конструктор принимающий char *, вызывал конструктор, которому требуется std::string.
Какие есть варианты, кроме создания отдельных методов инициализации?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2012, 18:39     Как вызвать другой констуктор из конструктора?
Посмотрите здесь:

C++ как вызвать Main из другой функции???
C++ Как вызвать из 1 функции параметры другой?
C++ можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это реализовать?
Как создать 3 конструктора? C++
При возврате объекта из функции пишет, что для объекта не определен констуктор копирования C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
13.03.2012, 18:49     Как вызвать другой констуктор из конструктора? #2
Просто
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
 
class obj
{
   std::string s;
public:
   obj(char* _s): s(std::string(_s)) 
   {
   
   }
   void show()
   { 
      std::cout << s << std::endl; 
   }
};
 
int main()
{
   obj o("Hello, world!");
   o.show();
}
http://liveworkspace.org/code/531ac5...3bc2954a80c014
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
13.03.2012, 19:00  [ТС]     Как вызвать другой констуктор из конструктора? #3
Спасибо, но как это избавляет от копипаста тела одного метода в другой?
Предположим класс хочет расширить свое применение и принимает тип string, в таком случае как вы модифицируете этот класс? Тот способ, который вы предложили всего лишь инициализирует поле _s и всего-то
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
13.03.2012, 19:03     Как вызвать другой констуктор из конструктора? #4
Новый стандарт вводит делегирующие конструкторы. В версии 4.7 GCC, если верить табличке на их сайте, они уже есть
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
13.03.2012, 19:05     Как вызвать другой констуктор из конструктора? #5
Цитата Сообщение от Buckstabue Посмотреть сообщение
Вот хочется, чтобы конструктор принимающий char *, вызывал конструктор
Стандарт C++ 2003 года не допускает вызова одних конструкторов класса из других конструкторов этого же класса. Каждый конструктор должен полностью инициализировать все члены класса либо вызывать для этого методы класса.
Yandex
Объявления
13.03.2012, 19:05     Как вызвать другой констуктор из конструктора?
Ответ Создать тему
Опции темы

Текущее время: 18:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru