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

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

Восстановить пароль Регистрация
 
KernelSource
0 / 0 / 0
Регистрация: 09.02.2012
Сообщений: 19
13.08.2012, 22:34     Не может найти конструктор для иниц поля класса #1
Здравствуйте. Помогите с проблемой. Есть класс 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++ Как написать конструктор для класса, в котором содержится структура?
Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). C++
Для класса задать конструктор и деструктор C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 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     Не может найти конструктор для иниц поля класса
Ответ Создать тему
Опции темы

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