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

Невозможно создать экземпляр абстрактного класса - C++

Восстановить пароль Регистрация
 
Васи
0 / 0 / 0
Регистрация: 19.06.2014
Сообщений: 97
28.05.2016, 21:13     Невозможно создать экземпляр абстрактного класса #1
work.cpp

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
#include "student.h"
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#include <string>
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
 
{
    string strWork();
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
// //////////////////////////////////////////////////////////робота з класом студент
//  створюємо три екземпляри похідного класу class Student  :  
//  екземпляр stud1 - використовуючи конструктор з параметрами
//  екземпляр stud4 - використовуючи конструктор копіювання,
//  і призначаємо студенту стипендію
//  екземпляр stud3 - використовуючи конструктор за умовчанням, без заповнення
 
  class Telephone stud1=Telephone("Fox", "Nicolia", "Nic", 1996, 575476, "Черінігів", "Україна");             // Створити екземпляр класу
//  виводимо вміст членів класу
  cout <<  "Ім'я - " <<  stud1.getName() << endl << " Призвіще - "     << stud1.getSName()     << endl; 
  cout <<  "Номер -  " <<  stud1.getNomer_telephone()  << endl << " Місто -  " <<  stud1.getTown() << endl; 
//////
  stud1.Show();    // роздрукувати стать, ФІБ, вік студента – наслідуваний метод class Person
 
  class Telephone stud4=stud1;        // скопіювати вміст екземпляру класу в новий екземпляр
  cout  << endl  << "Ekzemplyar new class: " << endl; 
  stud4.setTown("Київ");        // установити звичайну стипендію
//  виводимо вміст членів класу
  cout <<  "Ім'я - " <<  stud1.getName() << " Призвіще - "     << stud1.getSName()     << endl; 
  cout <<  "Номер -  " <<  stud1.getNomer_telephone()  << " Місто -  " <<  stud1.getTown() << endl;  
//////
  stud4.Show();
 
  class Telephone stud3=Telephone( );       // Створити екземпляр класу
  cout  << endl << "Instance of the class - garbage" << endl; 
  stud3.Show();    
 
  system("PAUSE");
  return 0;
}
person.h
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
105
106
107
108
109
110
111
112
113
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#include <string>
#include <iostream>
#include <fstream>
 
using namespace std;
 
class Person
{
public:
    virtual string strWork() = 0;
    string strSName;
    string strName;
    string strPatron;
    int iData;
    string strJob;
 
//    Person(const Person &Person) 
//    {
    //    this -> strSName = Person.strSName;
    //    this -> strName = Person.strName;
    //    this -> strPatron = Person.strPatron;
    //    this -> iAge = Person.iAge;
    //    this -> strRate = Person.strRate;
//  };
 
public:
    Person() {};
 
    Person(char *chSName, char *cName, char *chPatron, int iData);
 
    Person(const Person &personOther)
    {
        setSName( (char*)personOther.strSName.c_str() ); 
        setName( (char*)personOther.strName.c_str() );
        setPatron( (char*)personOther.strPatron.c_str() );
        setData( (int)personOther.iData ); 
    };    
    virtual ~Person() { };    
//  змінити елементи екземпляру класу                            
    void setSName(char *chSName)        {this->strSName=chSName;}
    void setName(char *chName)          {this->strName=chName;}
    void setPatron(char *chPatron)      {this->strPatron=chPatron;}
    void setData(int iData)             {this->iData=iData;}
 
//  отримати елементи екземпляру класу
    string getSName()       const {return strSName;}
    string getName()        const {return strName;}
    string getPatron()      const {return strPatron;}
    int getData()           const {return iData;}
};
 
Person::Person(char *chSName, char *chName, char *chPatron, int iData=0)
{
     setSName(chSName);
     setName(chName);
     setPatron(chPatron);
     setData(iData);
}
 
class Telephone: public Person
{
    int iNomer_telephone;
    string strTown;
    string strCountry;
 
public:
    Telephone() {};
 
    Telephone(char *chSName, char *chName, char *chPatron, int iData, 
        int iNomer_telephone, char *chTown, char *chCountry);
 
    Telephone(const Telephone &telephoneOther) : Person()
    {
        setNomer_telephone( (int)telephoneOther.iNomer_telephone ); 
        setTown( (char*)telephoneOther.strTown.c_str() );
        setCountry( (char*)telephoneOther.strCountry.c_str() );
    };    
    virtual ~Telephone() { };    
//  змінити елементи екземпляру класу                            
    void setNomer_telephone(int iNomer_telephone)    {this->iNomer_telephone=iNomer_telephone;}
    void setTown(char *chTown)            {this->strTown=chTown;}
    void setCountry(char *chCountry)    {this->strCountry=chCountry;}
//  отримати елементи екземпляру класу
    int getNomer_telephone()        const {return iNomer_telephone;}
    string getTown()                const {return strTown;}
    string getCountry()             const {return strCountry;}
 
// Друк інформацію про студента 
    void  Show()
    {
        cout << getSName() << " " << getName() << " " << getPatron() << " " << getNomer_telephone() << " " << getTown();
        cout << getCountry() << " " << endl;
    }
};
 
//                 Опис методів похідного  класу
// Конструктор опис, змінні  char - не пусті значення, інші або  = 0, або всі задані     
    Telephone::Telephone(char *chSName, char *chName, char *chPatron, int iData, 
        int iNomer_telephone, char *chTown, char *chCountry)  :  Person(chSName, chName, chPatron, iData)  
 // типи змінних співпадають з типами у базовому класі
    {
        //setSName(chSName);
        //setName(chName);
        //setPatron(chPatron);
        //setData(iData);
        setNomer_telephone(iNomer_telephone);
        setTown(chTown);
        setCountry(chCountry);
    }
Возникают ошибки:

Ошибка 5 error C3861: Telephone: идентификатор не найден C:\Users\Ніколя\Documents\Visual Studio 2010\Projects\Лабораторна робота 8\code\work.cpp 26
Ошибка 9 error C3861: Telephone: идентификатор не найден C:\Users\Ніколя\Documents\Visual Studio 2010\Projects\Лабораторна робота 8\code\work.cpp 42
Ошибка 3 error C2259: Telephone: невозможно создать экземпляр абстрактного класса C:\Users\Ніколя\Documents\Visual Studio 2010\Projects\Лабораторна робота 8\code\work.cpp 26
Ошибка 4 error C2259: Telephone: невозможно создать экземпляр абстрактного класса C:\Users\Ніколя\Documents\Visual Studio 2010\Projects\Лабораторна робота 8\code\work.cpp 26
Ошибка 6 error C2259: Telephone: невозможно создать экземпляр абстрактного класса C:\Users\Ніколя\Documents\Visual Studio 2010\Projects\Лабораторна робота 8\code\work.cpp 33
Ошибка 7 error C2259: Telephone: невозможно создать экземпляр абстрактного класса C:\Users\Ніколя\Documents\Visual Studio 2010\Projects\Лабораторна робота 8\code\work.cpp 42
Ошибка 8 error C2259: Telephone: невозможно создать экземпляр абстрактного класса C:\Users\Ніколя\Documents\Visual Studio 2010\Projects\Лабораторна робота 8\code\work.cpp 42

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2016, 21:13     Невозможно создать экземпляр абстрактного класса
Посмотрите здесь:

C++ Невозможно создать экземпляр абстрактного класса. :)
Ошибка: невозможно создать объект абстрактного класса C++
как исправить Ошибка 8 error C2259: Tabl: невозможно создать экземпляр абстрактного класса C++
C++ error C2259: number_of_plants: невозможно создать экземпляр абстрактного класса
C++ error C2259: last: невозможно создать экземпляр абстрактного класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
28.05.2016, 21:28     Невозможно создать экземпляр абстрактного класса #2
В классе Telephone не переопределен абстрактный метод Person::strWork, что автоматически делает класс Telephone абстрактным
Васи
0 / 0 / 0
Регистрация: 19.06.2014
Сообщений: 97
28.05.2016, 22:32  [ТС]     Невозможно создать экземпляр абстрактного класса #3
То же самое.

C++
1
2
3
4
5
6
class Telephone: public Person
{
    virtual string strWork() = 0;
    int iNomer_telephone;
    string strTown;
    string strCountry;
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
28.05.2016, 22:43     Невозможно создать экземпляр абстрактного класса #4
Цитата Сообщение от Васи Посмотреть сообщение
То же самое.
Ну так вы ничего не изменили - strWork как был абстрактным, так и остался
Создайте реализацию этого метода в классе Telephone
Yandex
Объявления
28.05.2016, 22:43     Невозможно создать экземпляр абстрактного класса
Ответ Создать тему
Опции темы

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