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

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

Войти
Регистрация
Восстановить пароль
 
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
#1

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

13.03.2012, 18:39. Просмотров 987. Ответов 4
Метки нет (Все метки)

У меня есть класс, конструктор которого принимает как 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 функции параметры другой?
Как создать 3 конструктора? C++
C++ Как передать в качестве параметра конструктора ПОТОК,
Как запретить вызов конструктора 2-ой раз C++
Вызвать функцию из другой функции.Работа с мышью[Из подменю в меню. Консоль] C++
C++ Как проверять и тестировать входные аргументы конструктора?
C++ Как узнать количество аргументов конструктора?
C++ Как вызвать другой конструктор для уже созданного объекта конструктором по умолчанию?
Вызвать абстрактный метод из конструктора C++
Как определить наличие конструктора с заданными параметрами? C++
Вызвать функцию внутри другой функции C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3584 / 1364 / 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
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
13.03.2012, 19:03     Как вызвать другой констуктор из конструктора? #4
Новый стандарт вводит делегирующие конструкторы. В версии 4.7 GCC, если верить табличке на их сайте, они уже есть
fasked
Эксперт C++
 Аватар для fasked
4929 / 2509 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
13.03.2012, 19:05     Как вызвать другой констуктор из конструктора? #5
Цитата Сообщение от Buckstabue Посмотреть сообщение
Вот хочется, чтобы конструктор принимающий char *, вызывал конструктор
Стандарт C++ 2003 года не допускает вызова одних конструкторов класса из других конструкторов этого же класса. Каждый конструктор должен полностью инициализировать все члены класса либо вызывать для этого методы класса.
Yandex
Объявления
13.03.2012, 19:05     Как вызвать другой констуктор из конструктора?
Ответ Создать тему
Опции темы

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