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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибки с реализацией md5 http://www.cyberforum.ru/cpp-beginners/thread998100.html
Доброе время суток. Не могли бы посмотреть исходник и по возможности помочь. В суме 8 ошибок error C2415: improper operand type #define _S11 7 #define _S12 12 #define _S13 17 #define _S14 22 #define _S21 5 #define _S22 9 #define _S23 14
C++ Нужно дописать код задачи смотрите суть в том что нада вписывать текст (количество букв в слове должно быть меньше 15) далее програма должна проверять на наличие палиндромов (слова которые читаются слева направо и наоборот например доход, заказ и тому подобное) и найти наибольшую длинну символов палиндромов соответственно а екран должно выводится число (длинна палиндрома) а если мы его не вводили в строчку то должен... http://www.cyberforum.ru/cpp-beginners/thread998093.html
Обработка матриц в С++ C++
Помогите мне сделать программу. Нужно ранспонировать матрицу и вывести на печать элементы главной диагонали и диагонали, расположенной под главной. Результаты разместить в двух строках. Размерность матрицы: F(10, 8). Двумерные массивы только начал изучать, толком ещё не разобрался... Вот что у меня пока получается...Только вот не траспонирует оно матрицу почему-то... #include <iostream.h>...
Как записать эти формулы? C++
Как записать эти формулы? Подскажите надо СРОЧНО!!!
C++ Заменить все малые буквы большими http://www.cyberforum.ru/cpp-beginners/thread998044.html
Добрый день, помогите доделать программу. Ругается на gets(s);. Условие: Рассмостреть участок строки до первого пробела (первый символ при этом не пробел), заменить все малые буквы большими. #include <iostream.h> #include <stdio> #include <string.h> using namespace std;
C++ Перегрузка операций Всем привет! Помогите пожалуйста с перегрузкой операций. У меня есть вот 4-ая лаба #include <iostream.h> #include <conio.h> #include <math.h> #include <string.h> using namespace std; // 2 - vozrast // 3 - ves // 4 - klass подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6159 / 2888 / 282
Регистрация: 04.12.2011
Сообщений: 7,686
Записей в блоге: 3
05.11.2013, 03:04     error C2259: number_of_plants: невозможно создать экземпляр абстрактного класса
ValeryS, Оксана 1234, не ругайте, что вмешиваюсь, но уж очень хочется поучаствовать. Вспомнил одну страшилку и решил рассказать на ночь хорошим людям.
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
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
 
class AbstrClass{
public://здесь и далее для простоты всё открыто
AbstrClass(const char *someCh){
c_str=0;//это вместо bad_alloc, но чтобы ноль где-то взять его нужно туда положить) 
c_str=new (std::nothrow) char[strlen(someCh)+1];//если new не выделит память то c_str будет 0
 
//c_str=new (std::nothrow) char[strlen(someCh+1)]; //коментарий смотрите ниже main(){}
//если хотите увидеть как это глючит заремьте правильную и разремьте закомментированную строчку
 
if(c_str)
strcpy(c_str, someCh);
else{
cout<<"Memory has gone to bed! Good night to all of you."<<endl;
system("pause");
exit(1);
}
    }
virtual~AbstrClass(){
if(c_str){
cout<<"Destr_Base with c_str : "<<c_str<<endl;
system("pause");    
    delete []c_str;
}
    }
 
virtual void foo()=0;
char *c_str;
};
class ChildOne :public AbstrClass
{
    public:
ChildOne(const char *someCh)
:AbstrClass(someCh)
{}
//~ChildOne(){};//нет необходимости, т.к. делать ему нечего, а базовый вызовется автоматически
virtual void foo(){cout<<"one foo! "<<c_str<<endl;}
};
 
class ChildNextOne :public AbstrClass
{
    public:
ChildNextOne(const char *someCh)
:AbstrClass(someCh)
{}
//~ChildNextOne(){}//
virtual void foo(){cout<<"the nextone foo! "<<c_str<<endl;}
};
 
int main(){
SetConsoleCP (1251); SetConsoleOutputCP (1251);
AbstrClass *ptr_Base[2]={0};
ChildOne one_ch("One");
ChildNextOne nextone_ch("Nextone");
ptr_Base[0]= &one_ch;
ptr_Base[1]= &nextone_ch;
 
for(int i=0; i<2; ++i){
    ptr_Base[i]->foo();
    }
 
cout<<endl;
system("pause");
return 0;
}
/*
//СТРАШНАЯ шутка для маленькой девочки на ночь:
вот нормальная строка:
c_str=new (std::nothrow) char[strlen(someCh)+1];
 
если эту строку по неосторожности написать:
c_str=new (std::nothrow) char[strlen(someCh+1)];
то компилятор это скушает! Это потому что указатели поддерживают адресную арифметику
и указатель сложенный с целым числом (единицей в данном случае) даст в результате указатель)))
 
Но strlen получит указатель на строку начиная с первого, а не нулевого символа,
поэтому память будет выделена неверно и неверно будет освобождаться!
Найти такую глупость труднее чем сотворить. :)
*/
Хотя конечно, устанавливать и сбрасывать указатели, использовать new без исключения ... может и муторно.
 
Текущее время: 19:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru