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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 4.95
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
#1

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

14.01.2012, 15:51. Просмотров 5559. Ответов 18
Метки нет (Все метки)

Делаю курсовик, сейчас на начальной стадии (а как же еще к концу сессии ). Код, который я сейчас покажу еще "сырой", а точнее нарезка из лаб за семестр и и тп. Пока отлаживаю просто создание объекта и пытаюсь запихать его в контейнер(шаблонный класс, который сам же и написал "список"). Объект суть производный класс из абстрактного. В мэйне при инициализации объекта возникает ошибка от компилятора "String:Невозможно создать экземпляр абстрактного класса". В общем как это сделать?
//--------------------------------main------------------------------------------
C++
1
2
3
4
5
6
7
8
9
#include "list.h"
 
void main()
{   list<String> A;
    cout<<"win"<<endl;
    String* a;
    a=new String("qwerty");
    A.add(a);
}
//------------------------------------описание классов----------------------------------------

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
#include <iostream>
#include <time.h>
#include <malloc.h>
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <dos.h>
#include <fstream>
using namespace std;
const char NONAME[]="NONAME";
const char STRINGNAME[]="String";
const char INTNAME[]="Int";
const char FLOATNAME[]="Float";
 
// Абстрактный класс - родитель классов, которые можно сохранять в коллекции
 
class object
{
public:
    char *className;// имя класса
    int sz2;
    int classUID;// уникальный идентификатор класса
    object(){classUID=0;};
    virtual ~object(){};
    virtual int GetUID() = 0;// получение УИК
    virtual char* GetName() = 0;// получение имени класса
 
    virtual int readbin(ifstream &ff) = 0;// чтение из бинарного файла
    virtual int writebin(ofstream &ff) = 0;// запись в бинарный файл
 
    virtual bool Load(char *buf) = 0;// загрузка из строки
    virtual bool Upload(char *buf) = 0;// выгрузка в строку
 
    virtual int Compar(object *rhs) = 0;// сравнение с другим объектом
 
    virtual void Union(object *rhs) = 0;// объединение с другим объектом
 
    virtual void Show(ostream &os = cout) = 0;// вывод в поток
    object *next,*prev;
};
class String: public object
{
public:
    char *str;  // Массив для хранения строки
    int sz;     // Размерность массива
    String();                                       // Конструктор по умолчанию
    String(char *s);                                // Конструктор с параметрами
    String(const String &rhs);                      // Конструктор копирования
    virtual ~String();              // Деструктор
    void add(const char *ns);                       // Добавление строки
    virtual void change(const char *ns);                    // Изменение строки
    virtual void print();                   // Вывод
    virtual int readbin(ifstream &ifs);                     // Чтение и запиcь в двоичный файл
    virtual int write(ofstream &ofs);
    operator char*();                               // Преобразование в строку
    //friend ostream& operator<< (ostream& os,const String& r); // Потоковый ввод/вывод
    //friend istream& operator>> (istream& is,String& r);
 
};
 
class Int: public object
{
    protected:
    Int *next,*prev;// указатели на следующий и предыдущий элементы списка
public:
    int date;   //поле данных
    
    Int();                                      // Конструктор по умолчанию
    Int(int a);                             // Конструктор с параметрами
    Int(const Int &rhs);                        // Конструктор копирования
    virtual ~Int();             // Деструктор
    virtual void change(int ns);                    // Изменение строки
    virtual void print();                   // Вывод
    virtual int readbin(ifstream &ifs);                     // Чтение и запиcь в двоичный файл
    virtual int write(ofstream &ofs);
    //friend ostream& operator<< (ostream& os,const String& r); // Потоковый ввод/вывод
    //friend istream& operator>> (istream& is,String& r);
 
};

//-----------------------------------методы-------------------------------------

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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include "head.h"
 
String::String()
{           // Конструктор по умолчанию
    sz=1;
    str=new char[sz];       // Создать массив
    str[0]='\0';
    next=prev=NULL;
    classUID=1;
    sz2=strlen(STRINGNAME)+1;
    className=new char[sz2];
    strcpy(className,STRINGNAME);
//  cout << endl << "\t\t*** Default constructor-1 parclass" << endl;
    
}
 
 
String::String(char *s){        // Конструктор  с параметрами
    sz=strlen(s)+1; // Вычислить длину масива и создать его
    str=new char[sz];
    strcpy(str,s);              // Скопировать строку
    next=prev=NULL;
    classUID=1;
    sz2=strlen(STRINGNAME)+1;
    className=new char[sz2];
    strcpy(className,STRINGNAME);
//  cout << endl << "\t\t*** Constructor with parameters-1 parclass" << endl;
}
 
 
String::String(const String &rhs){  // Конструктор копирования
    sz=rhs.sz;                      // Создать массив той же размерности, что и у переданного объекта 
    str=new char[sz];               
    strcpy(str,rhs.str);            // Скопировать строку
    next=prev=NULL;
    classUID=1;
    sz2=strlen(STRINGNAME)+1;
    className=new char[sz2];
    strcpy(className,STRINGNAME);
//  cout << endl << "\t\t*** Copy constructor-1 parclass" << endl;
}
 
 
String::~String()
{                   // Деструктор
    delete []str;                   // Удалить его
    delete []className;
//  cout << endl << "\t\t*** Destructor-1 parclass" << endl;
}
 
 
void String::add(const char *ns){       // Добавление строки
    int ss=strlen(ns);
    char *nstr=new char[sz+ss];         // Создать новый массив необходимой длины
    strcpy(nstr,str);                   // Скопировать исходную строку
    strcat(nstr,ns);                    // Дополнить новой строкой
    str=nstr;                           // Запомнить новый массив
    sz+=ss;
}
 
 
void String::change(const char *ns){        // Изменение строки
    int ss=strlen(ns);
    delete []str;               // Удалить старый массив
    str=new char[ss+1];         // Создать новый
    strcpy(str,ns);                         // Скопировать строку
}
 
void String::print()
{           // Вывод 
    cout << str<<endl;                          // Вывести строку
}
 
 
String::operator char*() // преобразование в строку
{
    return strdup(str);
}
 
ostream& operator<< (ostream& os,const String& r) // вывод в поток
 
{
    os << r.str;
    return os;
}
 
 
istream& operator>> (istream& is,String& r){
    char buf[1000];
    is >> buf;                                  // Прочитать строку из потока
 
    int ss=strlen(buf);
    int *n;
 
    delete [](r.str);               
    r.str=new char[ss+1];           
 
    n=(int*)r.str;
 
    strcpy(r.str,buf);                      
    r.sz=ss+1;
 
    return is;
}
 
 
 
int String::readbin(ifstream &ifs){     // Чтение из двоичного файла
    int s;
    ifs.read((char*)&s,sizeof(int));    
    delete []str;               
    str=new char[s+1];              
    ifs.read(str,s*sizeof(char));   
    str[s]='\0';
    sz=s+1;
 
    return 1;
}
 
 
int String::write(ofstream &ofs)
{       // Запись в двоичный файл
    int n=(strlen(str));
    ofs.write((char*)&n,sizeof(int));
    ofs.write((char*)str,n*sizeof(char));
 
    return 1;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2012, 15:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Невозможно создать экземпляр абстрактного класса. :) (C++):

Невозможно создать экземпляр абстрактного класса - C++
work.cpp #include &quot;student.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;windows.h&gt; #include...

error C2259: last: невозможно создать экземпляр абстрактного класса - C++
Только начала изучать абстрактные классы, и сразу же проблемы. error C2259: last: невозможно создать экземпляр абстрактного класса. Не знаю...

error C2259: number_of_plants: невозможно создать экземпляр абстрактного класса - C++
error C2259: number_of_plants: невозможно создать экземпляр абстрактного класса Пожалуйста, помогите main #include &quot;flower.h&quot; ...

как исправить Ошибка 8 error C2259: Tabl: невозможно создать экземпляр абстрактного класса - C++
имеется абстрактный класс, у нее есть 4 виртуальных функций: запись и чтение с помощью С и С++ имеется класс Tabl производный от...

Не получается создать экземпляр абстрактного класса - C++
в общем я очень тупой, буду благодарен за умные советы, имеется класс object и наследуемые от него triangle и uravn вот фрагмент из мэйна ...

Ошибка: невозможно создать объект абстрактного класса - C++
программа для заменны слова в файле, на введенное с клавы слово!реализовать нужно через интерфейс! ошибка в строчке Text edit; не...

18
cyberobot
15 / 15 / 1
Регистрация: 01.09.2011
Сообщений: 66
14.01.2012, 16:00 #2
может в производном классе должны быть определены копии всех виртуальных функций?
0
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
14.01.2012, 16:04  [ТС] #3
Нет. тоже самое.=)
0
fridi
-8 / 40 / 1
Регистрация: 21.09.2009
Сообщений: 145
14.01.2012, 16:08 #4
Ну вопервых
C++
1
2
3
4
5
virtual bool Load(char *buf) = 0;// загрузка из строки
virtual bool Upload(char *buf) = 0;// выгрузка в строку
virtual int Compar(object *rhs) = 0;// сравнение с другим объектом
virtual void Union(object *rhs) = 0;// объединение с другим объектом
virtual void Show(ostream &os = cout) = 0;// вывод в поток
эти определения обозначают что реализация будет в наследуемых классах, я что её не нашел
во вторых
конструктор по умолчанию в наследумых классах зачем?
вообщем я бы на вашем месте переписал все по новой
0
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
14.01.2012, 16:12  [ТС] #5
Цитата Сообщение от fridi Посмотреть сообщение
Ну вопервых
C++
1
2
3
4
5
virtual bool Load(char *buf) = 0;// загрузка из строки
virtual bool Upload(char *buf) = 0;// выгрузка в строку
virtual int Compar(object *rhs) = 0;// сравнение с другим объектом
virtual void Union(object *rhs) = 0;// объединение с другим объектом
virtual void Show(ostream &os = cout) = 0;// вывод в поток
эти определения обозначают что реализация будет в наследуемых классах, я что её не нашел
во вторых
конструктор по умолчанию в наследумых классах зачем?
вообщем я бы на вашем месте переписал все по новой
она есть уже, но все равно не катит
я и так делаю все по новой уже 3 раз
0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
14.01.2012, 16:14 #6
Цитата Сообщение от Akkoks Посмотреть сообщение
она есть уже, но все равно не катит
я и так делаю все по новой уже 3 раз
ПЕРЕОПРЕДЕЛИТЕ функции базового класса в классе-наследнике
0
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
14.01.2012, 16:18  [ТС] #7
Цитата Сообщение от Mayonez Посмотреть сообщение
ПЕРЕОПРЕДЕЛИТЕ функции базового класса в классе-наследнике
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
class String: public object
{
public:
    char *str;  // Массив для хранения строки
    int sz;     // Размерность массива
    String();                                       // Конструктор по умолчанию
    String(char *s);                                // Конструктор с параметрами
    String(const String &rhs);                      // Конструктор копирования
    virtual ~String();              // Деструктор
    void add(const char *ns);                       // Добавление строки
    void change(const char *ns);                    // Изменение строки
    void print();                   // Вывод
 
    virtual int GetUID();// получение УИК
    virtual char* GetName();// получение имени класса
 
    virtual int readbin(ifstream &ff);// чтение из бинарного файла
    virtual int writebin(ofstream &ff);// запись в бинарный файл
 
    virtual bool Load(char *buf);// загрузка из строки
    virtual bool Upload(char *buf);// выгрузка в строку
 
    virtual int Compar(String *rhs);// сравнение с другим объектом
 
    virtual void Union(String *rhs);// объединение с другим объектом
 
    virtual void Show(ostream &os = cout);// вывод в поток
    operator char*();                               // Преобразование в строку
    //friend ostream& operator<< (ostream& os,const String& r); // Потоковый ввод/вывод
    //friend istream& operator>> (istream& is,String& r);
 
};
вот, пожалуйста =) все равно не работает=)
0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
14.01.2012, 16:21 #8
Цитата Сообщение от Akkoks Посмотреть сообщение
вот, пожалуйста =) все равно не работает=)
а их реализация?

Добавлено через 38 секунд
и по-моему они не должны быть виртуальными...
0
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
14.01.2012, 16:25  [ТС] #9
Цитата Сообщение от Mayonez Посмотреть сообщение
а их реализация?

Добавлено через 38 секунд
и по-моему они не должны быть виртуальными...
Реализация не обязательнА, пока я ими не буду пользоваться...
Да, по моему тоже, но разве тогда они не буду считаться, как "свои" функции производного класса?
0
fridi
-8 / 40 / 1
Регистрация: 21.09.2009
Сообщений: 145
14.01.2012, 16:26 #10
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
class String: public object
{
public:
        char *str;      // Массив для хранения строки
        int sz;         // Размерность массива
        String();                                                                               // Конструктор по умолчанию
        String(char *s);                                                                // Конструктор с параметрами
        String(const String &rhs);                                              // Конструктор копирования
        virtual ~String();                              // Деструктор
        void add(const char *ns);                                               // Добавление строки
        void change(const char *ns);                                    // Изменение строки
    void print();                                       // Вывод
 
        virtual int GetUID(){};// получение УИК
        virtual char* GetName(){};// получение имени класса
 
        virtual int readbin(ifstream &ff){};// чтение из бинарного файла
        virtual int writebin(ofstream &ff){};// запись в бинарный файл
 
        virtual bool Load(char *buf){};// загрузка из строки
        virtual bool Upload(char *buf){};// выгрузка в строку
 
        virtual int Compar(String *rhs){};// сравнение с другим объектом
 
        virtual void Union(String *rhs){};// объединение с другим объектом
 
        virtual void Show(ostream &os = cout){};// вывод в поток
        operator char*();                                                               // Преобразование в строку
        //friend ostream& operator<< (ostream& os,const String& r);     // Потоковый ввод/вывод
    //friend istream& operator>> (istream& is,String& r);
 
};
Так работает?
0
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
14.01.2012, 16:28  [ТС] #11
Цитата Сообщение от fridi Посмотреть сообщение
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
class String: public object
{
public:
        char *str;      // Массив для хранения строки
        int sz;         // Размерность массива
        String();                                                                               // Конструктор по умолчанию
        String(char *s);                                                                // Конструктор с параметрами
        String(const String &rhs);                                              // Конструктор копирования
        virtual ~String();                              // Деструктор
        void add(const char *ns);                                               // Добавление строки
        void change(const char *ns);                                    // Изменение строки
    void print();                                       // Вывод
 
        virtual int GetUID(){};// получение УИК
        virtual char* GetName(){};// получение имени класса
 
        virtual int readbin(ifstream &ff){};// чтение из бинарного файла
        virtual int writebin(ofstream &ff){};// запись в бинарный файл
 
        virtual bool Load(char *buf){};// загрузка из строки
        virtual bool Upload(char *buf){};// выгрузка в строку
 
        virtual int Compar(String *rhs){};// сравнение с другим объектом
 
        virtual void Union(String *rhs){};// объединение с другим объектом
 
        virtual void Show(ostream &os = cout){};// вывод в поток
        operator char*();                                                               // Преобразование в строку
        //friend ostream& operator<< (ostream& os,const String& r);     // Потоковый ввод/вывод
    //friend istream& operator>> (istream& is,String& r);
 
};
Так работает?


К сожалению нет тем более всю реалезацию я уже добавил в методах...
0
fridi
-8 / 40 / 1
Регистрация: 21.09.2009
Сообщений: 145
14.01.2012, 16:29 #12
Листинг ошибок скиньте сюды
0
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
14.01.2012, 16:38  [ТС] #13
Цитата Сообщение от fridi Посмотреть сообщение
Листинг ошибок скиньте сюды
ну в вашем примере возникла куча ошибок из-за того, что многие функции должны возвращать значение
а без пустых реализаций только одна ошибка

Ошибка 1 error C2259: String: невозможно создать экземпляр абстрактного класса c:\локальный диск\универ\c++\kursach3\kursach3\main.cpp 7 kursach3

Добавлено через 5 минут
Вот тут пример из презентации, по которой нам ведут лекции (какой ужас, не правда ли?)

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
class Person {  // Абстрактный класс
public:
Person() {  
       strcpy(name,"NONAME"); age=0; next=0; }
Person(char*NAME,int AGE) {  strcpy(name,NAME); age=AGE; next=0; }
virtual~Person(){};
virtual void Show()=0;
virtual void Input()=0;
friend class List;     //для доступа в List к next
protected:
char name[20];       //имя
int age;             //возраст
Person* next;       
};
class Student: public Person{  //Студент
public:
Student() {grade=0;}
Student(char* NAME,int AGE, float GRADE): Person(NAME,AGE) 
       {grade=GRADE; }
void Show() {
        cout<<"name="<<name<<"            
        age="<<age<<"grade="<<grade<<endl;}
void Input() {
         cout<<"name=";cin>>name;
         cout<<"age=";cin>>age;
         cout<<"grade=";cin>>grade;
}
protected:
float grade;        //рейтинг
};
class Teacher: public Person{  // Преподаватель
public:   Teacher() {work=0;}
Teacher(char* NAME,int AGE,int WORK):
       Person(NAME,AGE) { work=WORK;}
void Show(){cout<<"name="<<name<<"  age="<<age<<"  work="<<work<<endl;}
void Input() {
        cout<<"name=";cin>>name;
        cout<<"age=";cin>>age;
        cout<<"work=";cin>>work;
}
protected:  int work;   //стаж
};
 
class List {
       private: Person* begin;
public:
       List()   {begin=0;}
       ~List();
       void Insert(Person*);
       void Show();
};
List::~List() { 
       Person*r;
    while(begin!=0){ 
               r=begin; begin=begin->next; delete r;}
}
void List::Insert(Person*p){
       Person *r;
       r=begin; begin=p; p->next=r;   }
void List::Show() {
       Person *r;
        r=begin;
        while(r!=0) {r->Show(); r=r->next;} 
}
 
void main() {
      List list;
    Student* ps;
    Teacher* pt;
    ps=new Student("Иванов",21,50.5);
    list.Insert(ps);
    pt=new Teacher("Котов",34,10);
    list.Insert(pt);
    ps=new Student();  ps->Input();
    list.Insert(ps);
    pt=new Teacher();  pt->Input();
    list.Insert(pt);
    list.Show();
}
0
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
14.01.2012, 16:49  [ТС] #14
Цитата Сообщение от fridi Посмотреть сообщение
C++
1
2
3
 String* a;
 a=new String("qwerty");
 A.add(a);
тут ошибка a->add("foo"); примерно так должно быть верните все как было
окей, теперь при дебаге вылетает на

a->add("foo"); чудеса...
Run-Time Check Failure #3 - The variable 'a' is being used without being initialized. вот ошибка дебага
0
fridi
-8 / 40 / 1
Регистрация: 21.09.2009
Сообщений: 145
14.01.2012, 17:18 #15
вот подправил вроде все ок должно быть
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
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <dos.h>
#include <fstream>
using namespace std;
const char NONAME[]="NONAME";
const char STRINGNAME[]="String";
const char INTNAME[]="Int";
const char FLOATNAME[]="Float";
 
// Абстрактный класс - родитель классов, которые можно сохранять в коллекции
 
class object
{
public:
        char *className;// имя класса
        int sz2;
        int classUID;// уникальный идентификатор класса
        object(){classUID=0;};
        virtual ~object(){};
        virtual int GetUID() = 0;// получение УИК
        virtual char* GetName() = 0;// получение имени класса
 
        virtual int readbin(ifstream &ff) = 0;// чтение из бинарного файла
        virtual int writebin(ofstream &ff) = 0;// запись в бинарный файл
 
        virtual bool Load(char *buf) = 0;// загрузка из строки
        virtual bool Upload(char *buf) = 0;// выгрузка в строку
 
        virtual int Compar(object *rhs) = 0;// сравнение с другим объектом
 
        virtual void Union(object *rhs) = 0;// объединение с другим объектом
 
        virtual void Show(ostream &os = cout) = 0;// вывод в поток
        object *next,*prev;
};
class String: public object
{
public:
        char *str;      // Массив для хранения строки
        int sz;         // Размерность массива
        String(){};                                                                               // Конструктор по умолчанию
        String(char *s){};                                                                // Конструктор с параметрами
        String(const String &rhs){};                                              // Конструктор копирования
         ~String(){};                              // Деструктор
        void add(const char *ns);                                               // Добавление строки
        virtual int GetUID() {return 0;};// получение УИК
        virtual char* GetName() {return "foo";};// получение имени класса
 
        virtual int readbin(ifstream &ff) {return 0;};// чтение из бинарного файла
        virtual int writebin(ofstream &ff){return 0;};// запись в бинарный файл
 
        virtual bool Load(char *buf) {return 0;};// загрузка из строки
        virtual bool Upload(char *buf) {return 0;};// выгрузка в строку
 
        virtual int Compar(object *rhs) {return 0;};// сравнение с другим объектом
 
        virtual void Union(object *rhs) {};// объединение с другим объектом
 
        virtual void Show(ostream &os = cout) {};// вывод в поток                                                            // Преобразование в строку
        //friend ostream& operator<< (ostream& os,const String& r);     // Потоковый ввод/вывод
    //friend istream& operator>> (istream& is,String& r);
 
};
 
class Int: public object
{
        protected:
        Int *next,*prev;// указатели на следующий и предыдущий элементы списка
public:
        int date;       //поле данных
 
        Int();                                                                          // Конструктор по умолчанию
        Int(int a);                                                             // Конструктор с параметрами
        Int(const Int &rhs);                                            // Конструктор копирования
        virtual ~Int();                         // Деструктор
        virtual void change(int ns);                                    // Изменение строки
        virtual void print();                                   // Вывод
        virtual int readbin(ifstream &ifs);                                             // Чтение и запиcь в двоичный файл
        virtual int write(ofstream &ofs);
        //friend ostream& operator<< (ostream& os,const String& r);     // Потоковый ввод/вывод
        //friend istream& operator>> (istream& is,String& r);
 
};
 
int main()
{
 
  String s("qwerty");
 
 
}
1
14.01.2012, 17:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2012, 17:18
Привет! Вот еще темы с ответами:

Не могу создать дочку абстрактного класса - C++
Следующий код на MS Visual C++ 2010 даёт ошибку error C2259: 'IntValue' : cannot instantiate abstract class: #include &lt;iostream&gt; ...

Создать экземпляр класса без явного указания членов класса - C++
Если у меня есть два конструктора, один из которых по умолчанию, а второй явный. Я почему-то не могу создать экземпляр класса без явного...

Не получается создать объект унаследованный от абстрактного класса - C++
Здравствуйте! Нужна помощь с виртуальными функциями, в теории понимаю что это, а вот с реализацией что-то совсем не получается. ...

Создать новый объект-наследник абстрактного класса - C++
Приветствую, друзья! У нас есть абстрактный класс AbstractClass и его наследники child1 и child2. В массиве у нас есть несколько...


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

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

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