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

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

Войти
Регистрация
Восстановить пароль
 
Levan-ozzy
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 7
#1

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

27.09.2013, 00:18. Просмотров 1154. Ответов 8
Метки нет (Все метки)

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: »
и имя преподавателя.

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

Проблемы с классом GradeBook - C++
Помогите пожалуйста исправить ошибки 1&gt; GradeBook.cpp 1&gt;d:\projects\cpp\cpp\gradebook.h(8): error C2864: GradeBook::students: в...

Вставка в map и ошибка "Отсутствуют экземпляры конструктора" - C++
Подчёркивает map в 3тей строчке и пишет ошибку 1 IntelliSense: отсутствуют экземпляры конструктора &quot;std::pair&lt;_Ty1, _Ty2&gt;::pair &quot;,...

Отсутствуют экземпляры шаблон функции "print", соответствующие списку аргументов - C++
Подскажите, почему ругается на вызов функции print? #include &lt;iostream&gt; using namespace std; template &lt;class T&gt; void...

Ошибка в шаблоне функции: "Отсутствуют экземпляры шаблон функции, соответствующие списку аргументов" - C++
#include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;map&gt; #include &lt;Windows.h&gt; #include &lt;functional&gt; #include &lt;string&gt; #include...

Определить класс Gradebook: Не могу понять что не так - C++
Учусь по книге &quot;Дейтел Х., Дейтел П. Как программировать на C++ (5-е издание, 2008)&quot; учусь 2 дня, не ругайтесь пожалуйста если что то...

Отсутствуют экземпляры перегруженная функция - C++
Вся проблема в том что если закинуть посложней функцию, то всё. Ошибка. Проблема с sin и т. д. Помогите разобраться код полностью...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
27.09.2013, 00:55 #2
скачал эту книгу посмотреть... Мда, не понимаю, зачем её часто советуют? Я думал хорошая книга, а скачав, понял, что зря так думал.
В главе 3 уже даётся введение в классы и объекты! Хотя читатель не доходил ещё ни до глав 4 и 5 "управляющие операторы", ни до главы 6 "Функции".
Что новичок вообще будет изучать о классах, если для него элементарный синтаксис С++ поросячья латынь? Чем он будет заполнять их?

Levan-ozzy, Я советую просто пропустить эту главу и вернуться к ней после прохождения глав 4, 5, 6, 7, 8
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6472 / 3120 / 306
Регистрация: 04.12.2011
Сообщений: 8,594
Записей в блоге: 4
27.09.2013, 01:10 #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;
}
1
Levan-ozzy
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 7
27.09.2013, 01:22  [ТС] #4
IGPIGP, Спасибо огромное) Весь день сегодня мучился)
Kuzia domovenok, спасибо за совет, завтра начну эти главы разбирать.
0
System16v
3 / 3 / 0
Регистрация: 19.02.2014
Сообщений: 115
26.02.2015, 14:06 #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ом коде,как правильно реализовать,я конечно не знаю,поэтому как понял,так и попытался.Подскажите пожалуйста в чем ошибка?
0
Nishen
350 / 188 / 71
Регистрация: 26.02.2015
Сообщений: 911
26.02.2015, 14:15 #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);
* * * * }
А что ты вообще этим хотел сделать?
0
System16v
3 / 3 / 0
Регистрация: 19.02.2014
Сообщений: 115
26.02.2015, 14:22 #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);
}
теперь там ошибок нет в том коде,но ругается на другое.
0
Nishen
350 / 188 / 71
Регистрация: 26.02.2015
Сообщений: 911
26.02.2015, 14:28 #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++");
0
System16v
3 / 3 / 0
Регистрация: 19.02.2014
Сообщений: 115
26.02.2015, 14:41 #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, прав,я еще сам удивился,с какого перепугу сразу глава Классы и Объекты идет,если вообще еще ничего не изучалось в книге...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2015, 14:41
Привет! Вот еще темы с ответами:

Отсутствуют экземпляры перегруженная функция sort - C++
#include&lt;iostream&gt; #include&lt;string&gt; #include&lt;vector&gt; #include&lt;algorithm&gt; #include&lt;cmath&gt; #include&lt;Windows.h&gt; using namespace...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Реализовать класс "записная книжка" с конструктором и деструктором - C++
1. Написать класс, объектами которого являются записи в записной книжке. Каждая запись состоит из следующих полей: имя, фамилия, номер...

Отсутствуют экземпляры конструктора - C++
string CreatingaStream(int US,user player,user player2){ int z = 0; string word; getline(cin, word); z++; Sleep(50); ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.02.2015, 14:41
Ответ Создать тему
Опции темы

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