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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
magals
273 / 62 / 3
Регистрация: 18.04.2011
Сообщений: 1,347
Записей в блоге: 1
#1

Приравнивание переменных в классах. - C++

12.05.2011, 11:55. Просмотров 1082. Ответов 4
Метки нет (Все метки)

Почему нельзя в классе сразу после объявления переменной прировнять её к определенному значению? Нампример: AnsiString DirectorySt="";
И как это обойти, что при запуске программы для всех компонентов в форме, переменная DirectorySt была изначально ровна к “ ”, пока мы её не изменим.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2011, 11:55     Приравнивание переменных в классах.
Посмотрите здесь:

Visual C++ Поменять местами значения целых переменных х и у не используя дополнительных переменных
C++ Ошибка в классах
C++ Конструкторы в классах
WinApi в классах Visual C++
Наследование в классах C++
C++ Ошибка в классах
C++ Исключения в классах
C++ Функции в классах С++
C++ Чем отличаються поля от переменных(в классах)?
C++ Ошибка в классах
C++ Linux Видимость в классах
C++ Fstream в классах

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1921 / 1530 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
12.05.2011, 13:53     Приравнивание переменных в классах. #2
Все члены класса можно инициализировать в списке инициализации конструктора этого класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// *.h
class SomeClass
{
    private:
        AnsiString DirectorySt;
    public:
        SomeClass();
};
 
...
 
// *.cpp
SomeClass::SomeClass()
    : DirectorySt("")
{
}
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.05.2011, 14:19     Приравнивание переменных в классах. #3
magals, приравнивать нельзя потому, что сам класс - всего лишь описание типа, и пока вы не создадите хотя бы один объект класса, поля этого класса в памяти просто не существуют (за исключением статических полей). Хотя в новом стандарте собираются ввести подобный способ инициализации. А пока это нужно делать в списке инициализации конструктора, как и сказал rangerx.
magals
273 / 62 / 3
Регистрация: 18.04.2011
Сообщений: 1,347
Записей в блоге: 1
12.05.2011, 22:55  [ТС]     Приравнивание переменных в классах. #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class TForm1 : public TForm
{
__published:    // IDE-managed Components
 
private:    // User declarations
AnsiString DirectorySt;
public:     // User declarations
 
          TForm1();
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//.h
C++
1
2
3
4
5
6
7
8
9
10
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
TForm1::TForm1(): DirectorySt("")
{
}

пишет при попытке скомпилировать : [C++ Error] Unit1.cpp(18): E2251 Cannot find default constructor to initialize base class 'TForm'

хотя вроде сделал всё как надо.
rangerx
1921 / 1530 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
13.05.2011, 00:09     Приравнивание переменных в классах. #5
C++
1
2
3
4
5
6
7
8
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner),
          DirectorySt("")
{
}
//---------------------------------------------------------------------------
Yandex
Объявления
13.05.2011, 00:09     Приравнивание переменных в классах.
Ответ Создать тему
Опции темы

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