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

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

Войти
Регистрация
Восстановить пароль
 
KernelSource
0 / 0 / 0
Регистрация: 09.02.2012
Сообщений: 19
#1

Не может найти конструктор для иниц поля класса - C++

13.08.2012, 22:34. Просмотров 449. Ответов 3
Метки нет (Все метки)

Здравствуйте. Помогите с проблемой. Есть класс TCell, определен тип CellArray как массив 30 Х 30 из TCell. Также определен класс TGameSector, который имеет private поле CArr типа CellArray. При компиляции выходит ошибка: cannot find default constructor to initialize member TGameSector::CArr.
т.е. просит конструктор массива. Поискал в интернете, и, в частности, здесь, есть похожие проблемы но не "конструктор массива".

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class TCell: public TObject
{
//...
public:
__fastcall TCell(int X, int Y, uchar St);
//...
}
 
 
typedef TCell CellArray[30][30];
 
 
 
class TGameSector: public TImage
{
//...
  private:
    CellArray CArr;
 
  public:
 __fastcall TGameSector(TComponent* Owner, TInitStruct InitStruct);
//...
}
В cpp конструктор TGameSector описан:

C++
1
2
3
4
5
__fastcall TGameSector::TGameSector(TComponent* Owner, TInitStruct InitStruct) :  TImage(Owner)
{
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2012, 22:34     Не может найти конструктор для иниц поля класса
Посмотрите здесь:

Конструктор копирования для класса с указателем на абстрактный класс C++
C++ Как написать конструктор для класса, в котором содержится структура?
Для класса задать конструктор и деструктор C++
Конструктор для класса MinElement C++
C++ Cделать конструктор по умолчанию и копирования для класса
Как реализовать конструктор с параметрами для инициализации полей класса? C++
C++ В каких из приведенных ниже ситуаций может быть вызван конструктор копирования класса String:
C++ Конструктор копирования для динамического объекта класса приемника
C++ Дописать конструктор и деструктор для класса
Конструктор для контейнерного класса C++
Нужен ли конструктор для данного класса? C++
Создать конструктор для массива, как члена класса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
13.08.2012, 22:59     Не может найти конструктор для иниц поля класса #2
При создании массива создаются все элементы этого массива. для каждого должен позваться конструктор. Причем зовется конструктор без параметров, потому что какого-то способа задать специальный конструктор нет. Это значит, что у объектов массива должен быть конструктор без параметров. Т.к. у вас в массиве объекты типа TCell и у класса TCell нет конструктора без параметров, массив таких ячеек создаться не может.
Лечится добавлением в ТCell конструктора без параметров и потом уже каждая ячейка инициализируется в теле конструктора TGameSelector.
vampir64
6 / 6 / 0
Регистрация: 01.08.2012
Сообщений: 70
13.08.2012, 22:59     Не может найти конструктор для иниц поля класса #3
Похоже, что классу TCell нужен конструктор по-умолчанию.
KernelSource
0 / 0 / 0
Регистрация: 09.02.2012
Сообщений: 19
13.08.2012, 23:12  [ТС]     Не может найти конструктор для иниц поля класса #4
Все ясно DU, добавил конструктор без параметров:

__fastcall TCell::TCell():TObject(){}

или

__fastcall TCell::TCell(){}

Ошибки больше нет. Спасибо.
Yandex
Объявления
13.08.2012, 23:12     Не может найти конструктор для иниц поля класса
Ответ Создать тему
Опции темы

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