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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
petrovich1
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
#1

Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a ) - C++

16.12.2011, 22:18. Просмотров 1263. Ответов 5
Метки нет (Все метки)

Плиз помогите. Не знал, что я такой чайник.)

Итак:
есть два класса:

CMyClass.h
CMyClass.cpp

и

CMyClassDlg.h
CMyClassDlg.cpp

я перегружаю конструктор класса Class
C++
1
2
3
4
5
6
CMyClass::CMyClass()
{}
CMyClass::CMyClass( bool a )
{
if( a ) ... 
}
в классе ClassDlg я объявляю объект типа класс и хочу его проинициализировать с помощью перегруженного конструктора Class::Class( bool a )
как это сделать?

я делаю так:
в файле MyClassDlg.h объявляю
C++
1
MyClass class_item;
в файле MyClassDlg.cpp пишу:
C++
1
class_item = CMyClass(TRUE);
он пишет:
error C2582: ''operator ='' function is unavailable in ''CMyClass''


чего он ругается?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2011, 22:18     Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a )
Посмотрите здесь:

Используйте объект orange типа Tfruit для инициализации объекта grapefruit с помощью конструктора копирования - C++
Есть класс с именем Tfruit и объект orange типа Tfruit. Используйте orange для инициализации нового объекта на имя grapefruit с помощью...

Обяснение конструктора class HugeInteger - C++
#include <iostream.h> #include <string.h> class HugeInt{ friend ostream &operator<< (ostream &, const HugeInt &); // friend...

Переопределение типа class - C++
Подскажите в чем ошибка??? Не могу никак разобраться. "Ошибка 1 error C2011: zvetnik: переопределение типа...

Вложенный (внутренний) класс (inner class) - C++
Почему возникает ошибка? #include <iostream> using namespace std; class A { class B{ public: int r;

Реализация перегруженного конструктора - C++
Друзья, помоги с перегрузкой конструктора. Вообще задач от программы, что бы можно было задавать месяц такого вида 28.01.1994 и...

Написать функцию перегрузки оператора инкремента для увеличения переменной типа enum class - C++
Доброго времени суток. Есть перечисление. enum class Month { jan = 1, feb, mar, apr, may, jun, jul, aug, sep, nov, dec }; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dinosauro
Сообщений: n/a
17.12.2011, 20:43     Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a ) #2
Если память под объект выделяется в стеке объект нужно инициализировать при определении (определение MyClass class_item; инициализируется конструктором по умолчанию - без параметров), если нужно вызвать прегруженный конструктор нужно написать:
CMyClass class_item(TRUE);
При этом объект будет автоматически освобожден при выходе из области видимости class_item.

Можно создавать также объекты динамически(выделять память в куче):
CMyClass* class_item = new CMyClass(TRUE);
Но при этом память надо освобождать, когда объект не нужен, вызовом:
delete class_item;
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
18.12.2011, 18:53     Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a ) #3
по-моему там все просто.

MyClassDlg.h
C++
1
2
3
4
5
6
7
8
9
10
class CMyClassDlg
{
public:
    CMyClassDlg();
    ...
 
public:
    CMyClass m_A;
    CMyClass m_B;
}
MyClassDlg.cpp
C++
1
2
3
4
5
CMyClassDlg::CMyClassDlg():
    m_A(TRUE),
    m_B(FALSE)
{
}
В синтаксисе не совсем уверен, когда придут домой - гляну и уточню.

C уважением,
Владимир
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
18.12.2011, 23:21     Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a ) #4
Так и есть, приведенный выше синтаксис верный (помню ведь еще чего-то ).

При использовании указателей обычно инициализация указателей (создание экземпляров классов) проводится в теле конструктора, а их удаление в деструкторе. Например,

-= MyClassDlg.h =-
C++
1
2
3
4
5
6
7
8
9
10
11
class CMyClassDlg
{
public:
    CMyClassDlg();
    ~CMyClassDlg();
    ...
 
public:
    CMyClass* m_pA;
    CMyClass* m_pB;
}
-= MyClassDlg.cpp =-
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
CMyClassDlg::CMyClassDlg()
{
    m_pA = new CMyClass(TRUE);
    m_pB = new CMyClass(FALSE);
}
 
CMyClassDlg::~CMyClassDlg()
{
    if (!m_pA)
        delete m_pA;
    if (!m_pB)
        delete m_pB;
}
Удачи,
Владимир
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
18.12.2011, 23:23     Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a ) #5
ой!
C++
1
2
3
4
5
6
7
CMyClassDlg::~CMyClassDlg()
{
    if (m_pA)
        delete m_pA;
    if (m_pB)
        delete m_pB;
}
а еще лучше
C++
1
2
3
4
5
6
7
CMyClassDlg::~CMyClassDlg()
{
    if (m_pA != NULL)
        delete m_pA;
    if (m_pB != NULL)
        delete m_pB;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2012, 22:24     Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a )
Еще ссылки по теме:

Отслеживание входа и выхода с помощью конструктора и деструктора трассировочного типа - C++
Здравствуйте, у меня такой вопросик по объектно-ориентированному программированию. Требуется показать, как отслеживание входа в блок и...

public class && static class - C++
Вообщем у меня небольшая связка, которую я хотел бы использовать в программе своей, но компилятор мне выдает ошибку и я не знаю что все...

Дано описание следующего класса class TPoint ... Как описывается указатель на данный класс - C++
Дано описание следующего класса class TPoint ... Как описывается указатель на данный класс

Class для работы с дробными числами. Объяснить ( код писать не нужно ) - C++
Class для работы с дробными числами. Число должно быть представлено двумя полями: целая часть - целое со знаком, дробная часть - целое без...

Нужно изменить class human под изменение строк/переменных в ходе использования - C++
Здравствуйте, дорогие форумчане. У меня есть готовый код класса human, но вот только нужно его изменить таким образом, чтобы данные вводить...

Переопределение типа "class" - C++
Как я понял, ошибка "переопределение типа "class"" означает что класс уже был где-то объявлен, однако у меня он вроде нигде больше не...


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

Или воспользуйтесь поиском по форуму:
comm
Сообщений: n/a
16.01.2012, 22:24     Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a ) #6
C++
1
2
3
4
5
6
7
8
9
10
11
class A {
  A( bool sign) {
   ...
  } 
}
class B {
  A m_a;
  B() : m_a( true ) {
   ....
  }
}
инициализация агрегированных данных в конструкторе делается также как и вызов конструктора базового класса, все данные должны инициализироваться в том же порядке как и объявлялись
Yandex
Объявления
16.01.2012, 22:24     Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a )
Ответ Создать тему
Опции темы

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