С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Agent Smith
40 / 40 / 9
Регистрация: 24.11.2012
Сообщений: 200
#1

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

08.03.2013, 21:15. Просмотров 706. Ответов 6
Метки нет (Все метки)

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;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2013, 21:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ошибка cannot find default constructor (C++):

E2251 Cannot find default constructor to initialize base class - C++
Здравствуйте. Столкнулся с данной ошибкой: class fCountry { public: fCoutry(void) ...

Default copy constructor - C++
Что default copy constructor делает, из-за чего мой NRVO выводит разные адресса, если оставить его по умолчанию. А если переопределить...

no appropriate default constructor available при создании новой структуры - C++
Пытаюсь сделать список студентов. Есть класс Student, в него заносятся возраст, имя и фамилия. Далее методом списка хочу его занести в...

error C2512: no appropriate default constructor available, несмотря на наличие конструктора по умолчанию - C++
Вот код: class University { string name; Human *chief; public: vector&lt;Faculty&gt; subList;

"no appropriate default constructor available" - C++
Начал писать класс и попытался скомпилировать проект... class TMyGame: public TGame{ public: TMyGame(char *WorldFileName, char...

Ошибка expected constructor, destructor, or type conversion before '(' toke - C++
Возникает ошибка expected constructor, destructor, or type conversion before '(' toke в 7 и 16 строчке. #include &lt;iostream&gt; #include...

6
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
08.03.2013, 21:27 #2
в классе Rectangle все поля по умолчанию privat
0
Agent Smith
40 / 40 / 9
Регистрация: 24.11.2012
Сообщений: 200
08.03.2013, 21:37  [ТС] #3
Кудаив, и? чему это мешает? я же не пытаюсь получить к ним доступ извне. с ними (точнее с ним) работают только функции-члены этого класса.
0
ya_noob
_
203 / 147 / 9
Регистрация: 08.10.2011
Сообщений: 432
08.03.2013, 21:42 #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
1
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
08.03.2013, 21:50 #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;
ну а где у тебя находится это - ты не указал
0
Agent Smith
40 / 40 / 9
Регистрация: 24.11.2012
Сообщений: 200
08.03.2013, 21:59  [ТС] #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);
  }
может мне кто-то объяснит, что это такое и зачем оно нужно?
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
08.03.2013, 22:10 #7
Agent Smith, потому что в структуре Rect нет конструктора по умолчанию. Конструктор по умолчанию генерируется автоматически только если не определен ни один конструктор. Но у Вас определен конструктор с параметрами, поэтому или инициализируйте объект Rect через него, или добавьте конструктор по умолчанию в структуру Rect.
1
08.03.2013, 22:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2013, 22:10
Привет! Вот еще темы с ответами:

Ошибка expected constructor, destructor, or type conversion before ';' token - C++
выдает ошибку expected constructor, destructor, or type conversion before ';' token с 61-90 строчку.че делать уже не знаю.проверяла код ...

Реализация графического интерфейса пользователя в приложениях WinAPI. Ошибка default - C++
Сама программа: // фывфвфыв.cpp: определяет точку входа для приложения. // #include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include...

Ошибка "expected constructor, destructor, or type conversion" - C++
//ourfunc.cpp - îïðåäåëÿåò âàøó ñîáñòâåííóþ ôóíêöèþ #include &lt;iostream&gt; using namespace std; void simon(int); //ïðîòîòèï ôóíêöèè ...

Ошибка компиляции "no instance of constructor 'std::thread::thread' matches the argument list" - C++
Не могу сообразить почему возникает ошибка. У меня в классе есть метод, который должен работать в нескольких потоках одновременно. Вот он: ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.