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

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

Войти
Регистрация
Восстановить пароль
 
Викдон
67 / 67 / 4
Регистрация: 21.11.2008
Сообщений: 226
#1

Классы - C++

21.02.2009, 20:39. Просмотров 863. Ответов 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);
но выводится ошибка))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2009, 20:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Классы (C++):

Непонятна тема (Классы содержащие другие классы, как данные члены ) - C++
Изучаю книгу Джесс Либерти(в частности эту главу в данный момент) #include <iostream> class Point { public: void SetX(int...

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

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

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

классы/дочерние классы/методы - C++
помогите пожалуйста! надо что выводились только учебеники. чтоб былo через GetTip. h файл class Book { protected: char...

Классы, включающие другие классы - C++
Столкнулся вот с таким кодом: #include <iostream> class Point { public: void SetX(int x) {itsX = x;} void SetY(int y) ...

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


Добавлено через 1 минуту 29 секунд
если это массив то надо "[]" испльзовать
Я подумал, что опечатался человек )) в коструторе правильно написал, а тут так жестоко с круглыми скобками.
1
Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
21.02.2009, 20:53 #6
Цитата Сообщение от Vourhey Посмотреть сообщение
вызывается конструктор по умолчанию
разве вызывается конструктор по умолчанию если есть "свой"? По моему его надо явно определять)
0
Vourhey
Почетный модератор
6485 / 2259 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
21.02.2009, 20:56 #7
Бартимеус, конструктор по умолчанию есть всегда.
0
Бартимеус
181 / 33 / 2
Регистрация: 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
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,389
21.02.2009, 21:55 #9
Цитата Сообщение от Vourhey Посмотреть сообщение
Бартимеус, конструктор по умолчанию есть всегда.
За исключением: если объявлен хотя бы один пользовательский конструктор, то генерация implicitly declared конструктора по умолчанию подавляется - Стандарт, 12.1/5.
0
Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
21.02.2009, 21:58 #10
вот и я к томуже если объявил свой конструктор и хочешь использовать стандартный(без параметров то есть) то надо не поленится и ЯВНО объявить конструктор идентичный стандартному
1
Vourhey
Почетный модератор
6485 / 2259 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
21.02.2009, 22:06 #11
Но у человека компилится же, насколько я понял. Значит, компилер генерит конструктор по умолчанию. А ошибка, как я понял именно на delete и new в методе. Или он плохо объяснил, где у него ошибка.

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

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

Динамические массивы структур;Классы. Класс массивы структур;Классы. Класс динамического массива структур. - C++
Здраствуйте.Помогите с практичкой мое задание 4.3. Строка таблицы данных содержит следующую информацию о владельцах авто: ф.и.о....

Классы - C++
Есть у меня вот такой класс никак не могу понять почему он ругается на методы CVector operator*(CVector &amp;v,CMatrix &amp;m) u CVector...

Классы - C++
Пожалуйста помогите разобраться не получается класс с указателями на функции. #include &lt;stdlib.h&gt; #include &quot;iostream&quot; using...


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

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

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