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

Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook" - C++

Восстановить пароль Регистрация
 
Levan-ozzy
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 7
27.09.2013, 00:18     Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook" #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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// Заголовок GradeBook.h
 
#include <string>
 
using std:: string;
 
class GradeBook
{
    public:
 
        GradeBook (string);
        void setCourseName (string);
        void setTeacherName (string);
        string getCourseName ();
        string getTeacherName ();
        void displayMessage ();
 
    private:
 
    string CourseName;
    string TeacherName;         
};
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 
// GradeBook.cpp
 
 
#include <iostream>
 
using std::cout;
using std::endl;
 
#include "GradeBook.h"
 
GradeBook::GradeBook (string name, string teacher)
{
    setCourseName (name);
    setTeacherName (teacher);
}
 
void GradeBook::setCourseName (string name)
{
    CourseName = name;
}
 
void GradeBook::setTeacherName (string name)
{
    TeacherName = name;
}
 
string GradeBook::getCourseName()
{
    return CourseName;
}
 
string GradeBook::getTeacherName()
{
    return TeacherName;
}
 
void GradeBook::displayMessage ()
{
    cout << "Welcom to the Grade Book for:\n" << getCourseName () 
        << "!" << endl;
    cout << "Teather: " << getTeacherName () 
        << "!" << endl;
}
 
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 
\\ Grade.cpp
 
#include <iostream>
 
using std::cout;
using std::cin;
using std::endl;
 
#include <string>
 
using std::string;
using std::getline;
 
#include "GradeBook.h"
 
int main()
 
{
    string nameOfCourse;
    string TeacherName;
 
    cout << "Please enter Course Name: ";
        getline (cin, nameOfCourse);
 
    cout << "Please enter Course Teacher Name: ";
    getline (cin, TeacherName);
 
    GradeBook gradebook1 = (nameOfCourse, TeacherName);
 
    gradebook1.displayMessage();
 
    system ("pause");
    return 0;
}
Начал изучать С++ неделю назад. Учусь по книге Х. М. Дейтел "Как программировать на С++". Изучил главу "Введение в классы и объекты". В конце главы было задание:

Модифицируйте класс GradeBook (рис. 3.11-3.12) следующим образом:
a) Введите второй элемент данных string, представляющий имя преподавателя,
ведущего курс.
b) Предусмотрите в классе set-функцию для изменения имени преподавателя
и get-функцию для его извлечения.
c) Модифицируйте конструктор, чтобы он специфицировал два параметра: один
для названия курса и второй — для имени преподавателя.
d) Модифицируйте элемент-функцию displayMessage так, чтобы она сначала
выводила приветствие и название курса, а затем «This course is presented by: »
и имя преподавателя.

Как создать конструктор для двух параметров, можно ли сделать это так как я пытаюсь сделать? И вообще как лучше выполнять программу соответствующую этим заданиям?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2013, 00:18     Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook"
Посмотрите здесь:

Проблемы с классом GradeBook C++
C++ Проблемы с переводом строки в число (по книге Лафоре "ООП в С ++ ")
Реализовать класс "записная книжка" с конструктором и деструктором C++
Отсутствуют экземпляры конструктора C++
C++ Определить класс Gradebook: Не могу понять что не так
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
27.09.2013, 00:55     Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook" #2
скачал эту книгу посмотреть... Мда, не понимаю, зачем её часто советуют? Я думал хорошая книга, а скачав, понял, что зря так думал.
В главе 3 уже даётся введение в классы и объекты! Хотя читатель не доходил ещё ни до глав 4 и 5 "управляющие операторы", ни до главы 6 "Функции".
Что новичок вообще будет изучать о классах, если для него элементарный синтаксис С++ поросячья латынь? Чем он будет заполнять их?

Levan-ozzy, Я советую просто пропустить эту главу и вернуться к ней после прохождения глав 4, 5, 6, 7, 8
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6167 / 2896 / 282
Регистрация: 04.12.2011
Сообщений: 7,698
Записей в блоге: 3
27.09.2013, 01:10     Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook" #3
Kuzia domovenok, да + разделение кода на заголовки и файлы реализации... Все задом наперёд.
Levan-ozzy, тут всё в одном файле. Сравните и увидите где не так:
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <string>
using std:: string;
 
class GradeBook
{
public:
 
GradeBook (string);
GradeBook (string name, string teacher);
void setCourseName (string);
void setTeacherName (string);
string getCourseName ();
string getTeacherName ();
void displayMessage ();
 
private:
 
string CourseName;
string TeacherName;
};
////////////////////////////////////////////
 
// GradeBook.cpp
 
 
#include <iostream>
 
using std::cout;
using std::cin;
using std::endl;
 
//#include "GradeBook.h"
 
GradeBook::GradeBook (string name, string teacher)
{
setCourseName (name);
setTeacherName (teacher);
}
 
void GradeBook::setCourseName (string name)
{
CourseName = name;
}
 
void GradeBook::setTeacherName (string name)
{
TeacherName = name;
}
 
string GradeBook::getCourseName()
{
return CourseName;
}
 
string GradeBook::getTeacherName()
{
return TeacherName;
}
 
void GradeBook::displayMessage ()
{
cout << "Welcom to the Grade Book for:\n" << getCourseName ()
<< "!" << endl;
cout << "Teather: " << getTeacherName ()
<< "!" << endl;
}
 
//////////////////////
 
// Grade.cpp
 
//#include <iostream>
 
//using std::cout;
//using std::cin;
//using std::endl;
 
//#include <string>
 
using std::string;
using std::getline;
 
//#include "GradeBook.h"
 
int main()
 
{
string nameOfCourse;
string TeacherName;
 
cout << "Please enter Course Name: ";
getline (cin, nameOfCourse);
 
cout << "Please enter Course Teacher Name: ";
getline (cin, TeacherName);
 
GradeBook gradebook1(nameOfCourse, TeacherName);//=
 
gradebook1.displayMessage();
 
system ("pause");
return 0;
}
Levan-ozzy
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 7
27.09.2013, 01:22  [ТС]     Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook" #4
IGPIGP, Спасибо огромное) Весь день сегодня мучился)
Kuzia domovenok, спасибо за совет, завтра начну эти главы разбирать.
System16v
 Аватар для System16v
3 / 3 / 0
Регистрация: 19.02.2014
Сообщений: 115
26.02.2015, 14:06     Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook" #5
Здравствуйте,подскажите в чем проблема пожалуйста. Тоже самое задание,подскажите по поводу моего кода,попытался реализовать,но выдает ошибку "e2040 declaration terminated incorrectly (14)"
Вот код, в коде не могу выделить жирным что добавлено,но думаю и так поймете,добавлено setPrepodName(и другие с тем же именем), до добавления все работало.

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
/---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <string>
#include <conio.h>
#include "Unit2.h"
 
using namespace std;
        GradeBook::GradeBook(string name,string imya)
        {
        setCourseName(name);
        }
        {
        setPrepodName(imya);
        }
        void GradeBook::setCourseName(string name)
        {
        courseName=name;
        }
        void GradeBook::setPrepodName(string imya)
        {[/B]
        prepodName=imya;
        }
        string GradeBook::getCourseName()
        {
                return courseName;
        }
    string GradeBook::getPrepodName()
        {
                return prepodName;
        }
        void GradeBook::displayMessage()
        {
        cout << "Welcome to the GradeBook for\n"<<getCourseName()<<"!"<<endl;
    [B]cout << "Imya Prepoda for\n"<<getPrepodName()<<"!"<<endl;[/B]
        }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//---------------------------------------------------------------------------
#include <iostream>
#include <cstdlib>
#include <string>
#include <conio.h>
#include "Unit2.h"
 
using namespace std;
        int main()
{
        GradeBook gradeBook1 ("CS101 Introduction to C++ Programming");
        GradeBook gradeBook2 ("CS102 Data Structures in C++");
        cout << "gradeBook1 created for:" << gradeBook1.getCourseName()
        << "\ngradeBook2 created for:" << gradeBook2.getCourseName()<<endl;
        system("pause");
        return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <string>
 
using namespace std;
 
class GradeBook
{
        public:
                GradeBook(string, string);
                void setCourseName(string);
                string getCourseName();
                void displayMessage();
        private:
                string courseName;
        string prepodName;
        };
Ошибка в 1ом коде,как правильно реализовать,я конечно не знаю,поэтому как понял,так и попытался.Подскажите пожалуйста в чем ошибка?
Nishen
 Аватар для Nishen
171 / 77 / 28
Регистрация: 26.02.2015
Сообщений: 461
26.02.2015, 14:15     Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook" #6
Проблема в том, что ты в классе используешь прототип конструктора:
C++
1
GradeBook (string);
А за классом пытаешься описать его перегруженную не объявленную модификацию:
C++
1
GradeBook::GradeBook (string name, string teacher)
Цитата Сообщение от Levan-ozzy Посмотреть сообщение
Как создать конструктор для двух параметров
C++
1
2
GradeBook::GradeBook(string s1, string s2) : sq(s1), sw(s2)
{}
Добавлено через 3 минуты
Цитата Сообщение от System16v Посмотреть сообщение
{
* * * * setPrepodName(imya);
* * * * }
А что ты вообще этим хотел сделать?
System16v
 Аватар для System16v
3 / 3 / 0
Регистрация: 19.02.2014
Сообщений: 115
26.02.2015, 14:22     Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook" #7
Я убрал лишние скобки,проблемы пропала,но теперь ругается на последний код (main) - E2285 could not find a match for 'GradeBook::GradeBook(char*)' (11,12),что ему не нравится?
Nishen, ну объявление ф-ии ввода имени препод-ля,разве нет? Я там убрал {,}
C++
1
2
3
4
5
        
{
        setCourseName(name);
        setPrepodName(imya);
}
теперь там ошибок нет в том коде,но ругается на другое.
Nishen
 Аватар для Nishen
171 / 77 / 28
Регистрация: 26.02.2015
Сообщений: 461
26.02.2015, 14:28     Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook" #8
Цитата Сообщение от System16v Посмотреть сообщение
GradeBook::GradeBook(string name,string imya)
У тебя конструктор с двумя параметрами, а ты при создании объекта используешься с одним параметром
Цитата Сообщение от System16v Посмотреть сообщение
GradeBook gradeBook1 ("CS101 Introduction to C++ Programming");
* * * * GradeBook gradeBook2 ("CS102 Data Structures in C++");
К тому же описанный тобой конструктор принимает значение типа string, а ты пытаешься передать значение типа char*
Цитата Сообщение от System16v Посмотреть сообщение
GradeBook gradeBook1 ("CS101 Introduction to C++ Programming");
* * * * GradeBook gradeBook2 ("CS102 Data Structures in C++");
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2015, 14:41     Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook"
Еще ссылки по теме:

отсутствуют экземпляры перегруженная функция getline C++
C++ Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов
Вставка в map и ошибка "Отсутствуют экземпляры конструктора" C++

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

Или воспользуйтесь поиском по форуму:
System16v
 Аватар для System16v
3 / 3 / 0
Регистрация: 19.02.2014
Сообщений: 115
26.02.2015, 14:41     Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook" #9
Nishen, так я ж не менял ничего в начальном коде,он же работал.Или после добавления кода,значения на char изменились?Так как код исправить нужно правильно,подскажи пожалуйста.

Добавлено через 7 минут
Кажется допёрло...Запустилось,изменил на
C++
1
2
3
4
5
6
7
8
9
        int main()
{
        GradeBook gradeBook1 ("CS101 Introduction to C++ Programming", " Imya");
        GradeBook gradeBook2 ("CS102 Data Structures in C++", " Imya");
        cout << "gradeBook1 created for: " << gradeBook1.getCourseName()
        << gradeBook1.getPrepodName() << "\ngradeBook2 created for:" << gradeBook2.getCourseName()<< gradeBook2.getPrepodName() << endl;
        system("pause");
        return 0;
}
Спасибо за подсказку ,кстати Kuzia domovenok, прав,я еще сам удивился,с какого перепугу сразу глава Классы и Объекты идет,если вообще еще ничего не изучалось в книге...
Yandex
Объявления
26.02.2015, 14:41     Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook"
Ответ Создать тему
Опции темы

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