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

no appropriate default constructor available при создании новой структуры - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.79
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
21.02.2010, 20:50     no appropriate default constructor available при создании новой структуры #1
Пытаюсь сделать список студентов.
Есть класс Student, в него заносятся возраст, имя и фамилия.
Далее методом списка хочу его занести в CList при помощи ф-ции Add.
Так вот проблема что в Add не могу создать новую структуру first = new elem;
Прошу совета, код ниже.

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include<iostream>
#include <string.h>
#include <windows.h>
using namespace std;
 
class Student   // Класс студент.
{    
    char name[50]; // имя
    char surname[50]; // фамилия
    int age; // возраст
public:
    //Конструктор: 
    Student(char name[],char surname[],int age)
    { 
        // Компоненты и одноименные параметры: 
        strcpy(this->name,name);
        strcpy(this->surname,surname);
        this->age=age;
    }
};
 
 
struct Elem 
{
    Student n; //элемент
    Elem *next; //указатль
};
 
class Clist
{
    Elem *first, *last;
public:
    Clist();
    void Add(Student num);
    
    ~Clist();
};
 
Clist::Clist()
{
    first = last = NULL;
}
void Clist::Add (Student num)
{
    if (first == NULL)
    {
        first = new Elem; ////////////////////////ошибка тут
        first -> n = num;
        first -> next = NULL;
        last = first;
    }
    else
    {
        Elem *elem = new Elem; ////////////////////////ошибка тут
        elem -> n = num;
        elem -> next = NULL;
        last -> next = elem;
        last = elem;
    }
}
Clist::~Clist(){
    Elem* current=first;
    while (current!=NULL)
    {
        Elem *temp=current;
        current=current->next;
        delete temp;
    }
}
 
 
 
void main()
{
    Student A ("dyachenko","ilya",16);
    Clist list;
    list.Add(A);
    
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
22.02.2010, 10:26     no appropriate default constructor available при создании новой структуры #2
first = new Elem; ////////////////////////ошибка тут
C
1
 first = new Elem();
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,308
22.02.2010, 10:33     no appropriate default constructor available при создании новой структуры #3
Нет, все равно не будет работать. Правильно так:
C++
1
first = new Elem("Вася", "Пупкин", 15);
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
22.02.2010, 10:37  [ТС]     no appropriate default constructor available при создании новой структуры #4
Цитата Сообщение от CheshireCat Посмотреть сообщение
Нет, все равно не будет работать. Правильно так:
C++
1
first = new Elem("Вася", "Пупкин", 15);
'Elem::Elem' : function does not take 3 arguments
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,308
22.02.2010, 11:09     no appropriate default constructor available при создании новой структуры #5
Тьфу. Виноват-с. Перепутал, показалось, что вопрос о Student..... Предыдущее мое сообщение можно умножить на 0.
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
22.02.2010, 11:11  [ТС]     no appropriate default constructor available при создании новой структуры #6
Цитата Сообщение от Sekt Посмотреть сообщение
first = new Elem; ////////////////////////ошибка тут
C
1
 first = new Elem();
тож ерунда кстати.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2010, 11:42     no appropriate default constructor available при создании новой структуры
Еще ссылки по теме:

Вложенные структуры. Ошибка с создании вложенного двунаправленного списка C++
При создании объекта структуры не вызываются конструкторы C++
Ошибка при создании новой базы данных C++

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

Или воспользуйтесь поиском по форуму:
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,308
22.02.2010, 11:42     no appropriate default constructor available при создании новой структуры #7
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include<iostream>
#include <string.h>
#include <windows.h>
using namespace std;
 
class Student   // Класс студент.
{
        char name[50]; // имя
        char surname[50]; // фамилия
        int age; // возраст
public:
        //Конструктор:
        Student(const char name[], const char surname[], int age)
        {
                // Компоненты и одноименные параметры:
                strcpy(this->name,name);
                strcpy(this->surname,surname);
                this->age=age;
        }
};
 
 
struct Elem
{
        Student n; //элемент
        Elem *next; //указатль
 
        Elem(const Student& st): n(st), next(NULL) {};
};
 
class Clist
{
        Elem *first, *last;
public:
        Clist();
        void Add(Student num);
 
        ~Clist();
};
 
Clist::Clist()
{
        first = last = NULL;
}
void Clist::Add (Student num)
{
        if (first == NULL)
        {
                first = new Elem(num);
                last = first;
        }
        else
        {
                Elem *elem = new Elem(num);
                last -> next = elem;
                last = elem;
        }
}
Clist::~Clist(){
        Elem* current=first;
        while (current!=NULL)
        {
                Elem *temp=current;
                current=current->next;
                delete temp;
        }
}
 
 
 
int main()
{
        Student A ("dyachenko","ilya",16);
        Clist list;
        list.Add(A);
 
}
Остальное не смотрел.
Yandex
Объявления
22.02.2010, 11:42     no appropriate default constructor available при создании новой структуры
Ответ Создать тему
Опции темы

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