Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Викдон
67 / 67 / 24
Регистрация: 21.11.2008
Сообщений: 226
#1

Классы - C++

21.02.2009, 20:39. Просмотров 879. Ответов 14
Метки нет (Все метки)

У меня возник вопрос!
вот класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Mnojestvo{   //Класс Множество
 public:
     Mnojestvo(int n){FMas=new char [n];} //Конструктор для итогого множества С
     Mnojestvo(int n,char*ptr); 
     Mnojestvo Union(Mnojestvo P); //Метод "Объединение"
     Mnojestvo Cross(Mnojestvo P);// Метод "Пересечение"
     void Insert_Elem(); //Метод "Добавление элемента"
     ~Mnojestvo(){delete FMas;}
   // методы
 private:
    char*FMas; //Указатель на массив символов
    int count; //Число элементов в множестве
};
а вот объявление объекта:
C++
1
Mnojestvo A;
Могу я в методе класса удалить указатель FFam и заново выделить под него место?

Вот так:
C++
1
2
delete FMas;     
FMas = new char (count+1);
но выводится ошибка))
http://www.cyberforum.ru/cpp-beginners/thread430293.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2009, 20:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Классы (C++):

Программа по классам, которая использует классы точек и прямых на плоскости, а, возможно, и другие классы
Нужно написать программу, которая использует классы точек и прямых на...

Наследование, базовые классы и производные классы
Добрый вечер.Задание: необходимо разработать поля и методы наследуемые из...

Классы и наследование (Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию вычисления объёма.)
Уважаевые, помогите написать прожку на экзамене: Создать класс 3D фигура, и...

Классы возможностей(Mixin классы)
Не могу понять смысла использования mixin классов( это класс в котором есть...

Классы, включающие другие классы
Столкнулся вот с таким кодом: #include <iostream> class Point { public: ...

14
Бартимеус
181 / 33 / 7
Регистрация: 29.10.2008
Сообщений: 283
21.02.2009, 20:43 #2
Цитата Сообщение от Р’РёРєРґРѕРЅ Посмотреть сообщение
а вот объявление объекта:
Mnojestvo A;
у тебя конструктор чкакието там параметры принимать должен, а ты ему ничего не переданшь
0
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
21.02.2009, 20:46 #3
у тебя конструктор чкакието там параметры принимать должен, а ты ему ничего не переданшь
ага (вызывается конструктор по умолчанию и память не выделяется), к тому же...
Код
delete FMas;
а попробуй память из под массива по-правильному удалить.
0
Бартимеус
181 / 33 / 7
Регистрация: 29.10.2008
Сообщений: 283
21.02.2009, 20:47 #4
Цитата Сообщение от Викдон Посмотреть сообщение
delete FMas;
FMas=new char (count+1);
можешь, вот только не пойму что значит
Цитата Сообщение от Викдон Посмотреть сообщение
(count+1)
Добавлено через 1 минуту 29 секунд
если это массив то надо "[]" испльзовать
1
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
21.02.2009, 20:49 #5
Цитата Сообщение от Бартимеус Посмотреть сообщение
можешь, вот только не пойму что значит


Добавлено через 1 минуту 29 секунд
если это массив то надо "[]" испльзовать
Я подумал, что опечатался человек )) в коструторе правильно написал, а тут так жестоко с круглыми скобками.
1
Бартимеус
181 / 33 / 7
Регистрация: 29.10.2008
Сообщений: 283
21.02.2009, 20:53 #6
Цитата Сообщение от Vourhey Посмотреть сообщение
вызывается конструктор по умолчанию
разве вызывается конструктор по умолчанию если есть "свой"? По моему его надо явно определять)
0
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
21.02.2009, 20:56 #7
Бартимеус, конструктор по умолчанию есть всегда.
0
Бартимеус
181 / 33 / 7
Регистрация: 29.10.2008
Сообщений: 283
21.02.2009, 21:18 #8
А я тебе и не говорю, что его нет) я тебе говорю что программа выдает ошибку компиляции если ты его не объявляешь явно если есть свой конструктор она пытается его использовать, а этого не получается

Добавлено через 3 минуты 3 секунды
вот объясни мне почему такой код работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <conio.h>
 
using namespace std;
 
class temp
{
    public:
        temp(int y) {x = y;};
        int x;  
};
 
int main()
{
    temp first(6);
    cout<<first.x<<endl;
    _getch();
    return 0;   
}
а такой нет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <conio.h>
 
using namespace std;
 
class temp
{
    public:
        temp(int y) {x = y;};
        int x;  
};
 
int main()
{
    temp first;
    cout<<first.x<<endl;
    _getch();
    return 0;   
}
?
0
CheshireCat
Эксперт С++
2907 / 1256 / 114
Регистрация: 27.05.2008
Сообщений: 3,451
21.02.2009, 21:55 #9
Цитата Сообщение от Vourhey Посмотреть сообщение
Бартимеус, конструктор по умолчанию есть всегда.
За исключением: если объявлен хотя бы один пользовательский конструктор, то генерация implicitly declared конструктора по умолчанию подавляется - Стандарт, 12.1/5.
0
Бартимеус
181 / 33 / 7
Регистрация: 29.10.2008
Сообщений: 283
21.02.2009, 21:58 #10
вот и я к томуже если объявил свой конструктор и хочешь использовать стандартный(без параметров то есть) то надо не поленится и ЯВНО объявить конструктор идентичный стандартному
1
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
21.02.2009, 22:06 #11
Но у человека компилится же, насколько я понял. Значит, компилер генерит конструктор по умолчанию. А ошибка, как я понял именно на delete и new в методе. Или он плохо объяснил, где у него ошибка.

Добавлено через 4 минуты 6 секунд
Стандарт, 12.1/5.
отстань с этим. Стандартов не существует Есть компилятор.
0
Бартимеус
181 / 33 / 7
Регистрация: 29.10.2008
Сообщений: 283
21.02.2009, 22:19 #12
Ворхей, я привел тебе пример и пользовался я не каким-нибудь левым компилятором, а gcc. не запускается)
0
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
21.02.2009, 22:24 #13
Я не говорю, что у тебя левый компилер, я сам gcc всю жизнь использую и не спорю с твоим примером. Я предполагаю, почему может работать у человека прога. А может только если генерируется конструктор по умолчанию.
0
Викдон
67 / 67 / 24
Регистрация: 21.11.2008
Сообщений: 226
21.02.2009, 22:36  [ТС] #14
Спасибо) я тут не дописал Mnojestvo A(два параметра).. А ошибка была в том что я написал при выделении памяти указателю круглые скобки..
0
Vourhey
Почетный модератор
6490 / 2264 / 187
Регистрация: 29.07.2006
Сообщений: 12,534
21.02.2009, 22:42 #15
Викдон, память из под массива не забывай удалять используя [].
Тема закрыта.

P. S. да, и еще не ошибайся так больше , а то я подумал, что у тебя как у моего знакомого компилер (надо спросить, кстати, как называется), генерит все стандартные конструкторы сам, а потом вызывает их вложенным путем: сначал свой внутренний инциализатор, а потом уже написанный пользователем. Контроль качества, блин... Жуть, короче.
0
21.02.2009, 22:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2009, 22:42
Привет! Вот еще темы с решениями:

классы/дочерние классы/методы
помогите пожалуйста! надо что выводились только учебеники. чтоб былo через...

Динамические массивы структур;Классы. Класс массивы структур;Классы. Класс динамического массива структур.
Здраствуйте.Помогите с практичкой мое задание 4.3. Строка таблицы данных...

Классы в c++
Извините, если не туда написал. Вот к примеру я создал класс classa. В функции...

классы
что значит : и :: A-основной класс B-производный класс B::B(int ch,char...


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

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

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