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

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

Войти
Регистрация
Восстановить пароль
 
nazavrik
22 / 22 / 2
Регистрация: 17.09.2008
Сообщений: 130
#1

В конструктор класса передать объект этого класса - C++

14.02.2010, 00:39. Просмотров 852. Ответов 1
Метки нет (Все метки)

Вопрос на засыпку

Как в конструктор класса передать объект этого класса? Т.е.
C++
1
2
3
4
5
6
7
8
9
10
11
class A
{
public:
        A(const char* s){}
        ...
private:
        string str;
};
 
A a1("test");
A a2(a1); //для этого случая нужно предусмотреть конструктор
Добавлено через 18 минут
Вопрос решен. Необходимо объявить конструктор:
C++
1
2
3
4
5
6
7
8
9
class A
{
public:
        A(const char* s){}
        A(A &s){} // <---
        ...
private:
        string str;
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2010, 00:39     В конструктор класса передать объект этого класса
Посмотрите здесь:
C++ Индексация массива класса, через объект этого класса
C++ Передать argc, argv в конструктор класса
C++ Как в многопоточность передать объект класса? C++
Как передавать значения строкового типа в конструктор через объект класса? C++
Как передавать объект класса в методе main, чтобы конструктор не вызывался 2 раза? C++
C++ не удается передать объект из одного класса в другой посредством return
C++ Может ли метод класса возвращать экземпляр этого же класса?
Как сделать членом класса экземпляр этого же класса C++
как узнать,является данный объект класса А1 наследником класса А2 C++
Конструктор класса с инициализацией другого класса C++
Конструктор класса C++
C++ Конструктор класса

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
14.02.2010, 01:16     В конструктор класса передать объект этого класса #2
да, это вроде даже не простой констуктор, а конструктор копирования
C++
1
A ObjA = ObjC; // вызов A(A &s)
кстати напишите лучше A(const A &s)... по логике вы же считываете делая копию с того с чего конструируете, поэтому этот объект изменять не надо. пусть будет const

И не забудьте написать operator=(const A &s), а то я сегодня из за этого пол дня дебажил >_< копировалось по стандартному и 2 объекта моего класса указывали на одни и те же данные которые потом освобождались в 1 а во втором уже была попытка повторного освобождения. при этом я был полностью что operator= написан и искал ошибку в другом ну как всегда в общем
Ответ Создать тему
Опции темы

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