0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
1

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

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

Author24 — интернет-сервис помощи студентам
Плиз помогите. Не знал, что я такой чайник.)

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

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''


чего он ругается?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2011, 22:18
Ответы с готовыми решениями:

Работа с class ами. Заполнение дин. массива типа class
Всем доброго времени суток! Это моя первая тема на этом сайте, поэтому если что извините меня (за...

Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int')
Есть такие строки: std::list&lt;c_bullet*&gt; Bullets; ... for(auto i = Bullets.begin(); i !=...

Нужно обратиться к class CustomAdapter из static метода class HomeFragment
По нажатию на кнопку на экране выполняется следующий код: private...

bad class file: C:Program FilesJavajre1.5.0_02lib t.jar(java/lang/Object.class) class file has wrong version 49.0, should be 48.0
написал тестовый td_jsp.jsp фаил -&gt;&gt; &lt;html&gt; &lt;head&gt;&lt;title&gt;JSP test&lt;/title&gt;&lt;/head&gt; ...

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

Можно создавать также объекты динамически(выделять память в куче):
CMyClass* class_item = new CMyClass(TRUE);
Но при этом память надо освобождать, когда объект не нужен, вызовом:
delete class_item;
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
18.12.2011, 18:53 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 уважением,
Владимир
0
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
18.12.2011, 23:21 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;
}
Удачи,
Владимир
0
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
18.12.2011, 23:23 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;
}
0
comm
16.01.2012, 22:24 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 ) {
   ....
  }
}
инициализация агрегированных данных в конструкторе делается также как и вызов конструктора базового класса, все данные должны инициализироваться в том же порядке как и объявлялись
16.01.2012, 22:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2012, 22:24
Помогаю со студенческими работами здесь

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

Обяснение конструктора class HugeInteger
#include &lt;iostream.h&gt; #include &lt;string.h&gt; class HugeInt{ friend ostream &amp;operator&lt;&lt; (ostream...

Нужно составить регулярное выражение для поиска <div class="market_row_name"> и <div class="market_row_price">
Заранее спасибо!

Непонятная ошибка: Exception class EClassNotFound with message 'Class TLabeledEdit not found'
Когда написал среду в Делфи для БД Access то при запуске выдает такую ошибку. project...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru