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

ошибка cannot find default constructor - C++

Восстановить пароль Регистрация
 
Agent Smith
40 / 40 / 9
Регистрация: 24.11.2012
Сообщений: 200
08.03.2013, 21:15     ошибка cannot find default constructor #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
using namespace std;
 
struct Point
{
  float x,y;
  Point(const float _x,const float _y):x(_x),y(_y){};
};
 
struct Rect
{
  Point LTPoint,RBPoint;
 
  Rect(const float ltx,const float lty,const float rbx,const float rby):LTPoint(ltx,lty),RBPoint(rbx,rby){};
  void print(Point pt)
  {
    cout<<pt.x<<';'<<pt.y;
  }
};
 
class Rectangle
{
  Rect a;
 
  public:
 
  int set(Rect rec)
  {
    if((rec.LTPoint.x<rec.RBPoint.x)&&(rec.LTPoint.y>rec.RBPoint.y))
    {
      a=rec;
      return 0;
    }
    return 1;
  }
 
  Rectangle(Rect rec)
  {//вот здесь...
    set(rec);
  }
 
  Rectangle(Point lt,Point rb)
  {//вот здесь...
    Rect rec=Rect(lt.x,lt.y,rb.x,rb.y);
    set(rec);
  }
 
  Rectangle()
  {//и вот здесь вылазит ошибка E2279 Cannot find default constructor to initialize member 'Rectangle::a'
    srand(time(0));
    Rect rec=Rect(rand()%10,rand()%10,rand()%10,rand()%10);
    set(rec);
  }
в чем может быть проблема. вот коды создания объектов
C++
1
2
3
Rect _1=Rect(2,5,-3,6),       _2=Rect(2,8,4,4);
 
  Rectangle rect1(_1),rect2(_2),rect3,rect4;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
08.03.2013, 21:27     ошибка cannot find default constructor #2
в классе Rectangle все поля по умолчанию privat
Agent Smith
40 / 40 / 9
Регистрация: 24.11.2012
Сообщений: 200
08.03.2013, 21:37  [ТС]     ошибка cannot find default constructor #3
Кудаив, и? чему это мешает? я же не пытаюсь получить к ним доступ извне. с ними (точнее с ним) работают только функции-члены этого класса.
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
08.03.2013, 21:42     ошибка cannot find default constructor #4
C++
1
2
3
4
5
6
7
8
9
10
struct Rect
{
  Point *LTPoint,*RBPoint; // здесь была ошибка. Вы создаете объекты с помощью конструктора по умолчанию, который не определен для них
 
  Rect(const float ltx,const float lty,const float rbx,const float rby):LTPoint(new Point(ltx,lty)),RBPoint(new Point(rbx,rby)){};
  void print(Point pt)
  {
    cout<<pt.x<<';'<<pt.y;
  }
};
Вот так лучше

Только теперь LTPoint и RBPoint стали указателями и надо переопределить функцию print
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
08.03.2013, 21:50     ошибка cannot find default constructor #5
Цитата Сообщение от Agent Smith Посмотреть сообщение
C++
1
2
Rect _1=Rect(2,5,-3,6),     _2=Rect(2,8,4,4);
Rectangle rect1(_1),rect2(_2),rect3,rect4;
ну а где у тебя находится это - ты не указал
Agent Smith
40 / 40 / 9
Регистрация: 24.11.2012
Сообщений: 200
08.03.2013, 21:59  [ТС]     ошибка cannot find default constructor #6
Кудаив, извини, действительно чет забыл-в main. а вообще я разобрался: там оказываетя зачем-то начальная инициализация нужна:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Rectangle():a(Rect(0,0,0,0))
  {
    srand(time(0));
    Rect rec=Rect(rand()%10,rand()%10,rand()%10,rand()%10);
    set(rec);
  }
 
  Rectangle(const Rect rec):a(Rect(0,0,0,0))
  {
    set(rec);
  }
 
  Rectangle(const Point lt,const Point rb):a(Rect(0,0,0,0))
  {
    Rect rec=Rect(lt.x,lt.y,rb.x,rb.y);
    set(rec);
  }
может мне кто-то объяснит, что это такое и зачем оно нужно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2013, 22:10     ошибка cannot find default constructor
Еще ссылки по теме:

C++ error C2512: no appropriate default constructor available, несмотря на наличие конструктора по умолчанию
Ошибка expected constructor, destructor, or type conversion before '(' toke C++
Реализация графического интерфейса пользователя в приложениях WinAPI. Ошибка default C++

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

Или воспользуйтесь поиском по форуму:
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
08.03.2013, 22:10     ошибка cannot find default constructor #7
Agent Smith, потому что в структуре Rect нет конструктора по умолчанию. Конструктор по умолчанию генерируется автоматически только если не определен ни один конструктор. Но у Вас определен конструктор с параметрами, поэтому или инициализируйте объект Rect через него, или добавьте конструктор по умолчанию в структуру Rect.
Yandex
Объявления
08.03.2013, 22:10     ошибка cannot find default constructor
Ответ Создать тему
Опции темы

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