Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/26: Рейтинг темы: голосов - 26, средняя оценка - 4.50
5 / 5 / 0
Регистрация: 16.07.2009
Сообщений: 87
1

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

21.02.2010, 20:50. Просмотров 4923. Ответов 6
Метки нет (Все метки)


Пытаюсь сделать список студентов.
Есть класс 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);
    
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2010, 20:50
Ответы с готовыми решениями:

Default constructor
Добрый день! Имеется класс: public class Employee { private int a; private int b; ...

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

ошибка cannot find default constructor
#include &lt;iostream.h&gt; #pragma hdrstop ...

Error C2512: no appropriate default constructor available
Доброго времени суток. Следующий код class A { private: bool b1; bool b2; bool...

6
158 / 157 / 47
Регистрация: 29.04.2009
Сообщений: 637
22.02.2010, 10:26 2
first = new Elem; ////////////////////////ошибка тут
C
1
 first = new Elem();
0
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
22.02.2010, 10:33 3
Нет, все равно не будет работать. Правильно так:
C++
1
first = new Elem("Вася", "Пупкин", 15);
0
5 / 5 / 0
Регистрация: 16.07.2009
Сообщений: 87
22.02.2010, 10:37  [ТС] 4
Цитата Сообщение от CheshireCat Посмотреть сообщение
Нет, все равно не будет работать. Правильно так:
C++
1
first = new Elem("Вася", "Пупкин", 15);
'Elem::Elem' : function does not take 3 arguments
0
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
22.02.2010, 11:09 5
Тьфу. Виноват-с. Перепутал, показалось, что вопрос о Student..... Предыдущее мое сообщение можно умножить на 0.
0
5 / 5 / 0
Регистрация: 16.07.2009
Сообщений: 87
22.02.2010, 11:11  [ТС] 6
Цитата Сообщение от Sekt Посмотреть сообщение
first = new Elem; ////////////////////////ошибка тут
C
1
 first = new Elem();
тож ерунда кстати.
0
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
22.02.2010, 11:42 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);
 
}
Остальное не смотрел.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2010, 11:42

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

ArgumentException: Type does not have a default constructor
Имеется Базовый класс public class BaseClientView { public BaseClientView(bool...

При создании пустого апликейшена не создаётся default.aspx
При создании пустого апликейшена (web&gt;VS2012&gt;Emty) по дефолту Не создаётся default.aspx. Всё...

Error C2512: 'CModelDialog' : no appropriate default constructor available
Всем привет. Есть работающий код MFC документ/вид не созданный wizard'ом. Он рабочий, все...

Ошибка Cannot find default constructor to initialize base class
class CompGame: public TForm { public: int z; CompGame(int l=0){z=l;} };есть класс...


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

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

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