Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2010, 20:27   #1
Чудский
 
Регистрация: 06.10.2010
Сообщений: 8
Вопрос класс


вот текст:
Код:
class Sviato
{
 private:
 char* name;
 int day , mounth;
 public:
 Sviato(char* nn , int dd , int mm)
 {
  nn=name,
  dd=day,
  mm=mounth,
 }
 getSviato(char* nn int dd , int mm)
 {
  cout<<"nazva:"<<name<<"_"<<endl;
  cout<<"data:"<<day<<"."<<mounth<<"_"<<endl;
 }
 setSviato(char* nn, int dd, int mm)
 {
  cout<<"Vvedite nazvu";cin>>nn;cout<<"\n";
  cout<<"Vvedite datu";cin>>dd;cout<<".";cin>>mm;
};
//-------------------------------------------------------------------------
прога не создает объект класса.
чё делать?
Чудский вне форума Ответить с цитированием
Старый 19.10.2010, 20:44   #2
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

чтобы создать объект - нужно что-то сделать для этого. Например, объявить переменную типа Sviato в функции main
Код:
int main()
{
   Sviato myobject;

}
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 19.10.2010, 20:53   #3
coinkrsk
пыжашийся нуб
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 93
По умолчанию

Попрошу не обижаться на следующий коментарий, он вполне серьезный. Вы уверены, что уже готовы изучать ООП? Может есть смысл читать книжу не пропуская страницы и выполняя упражнения по ходу?

Чтобы этот кусок кода скомпилировался, то следует писать так:
Код:
Sviato(char* nn , int dd , int mm)
 {
  nn=name;
  dd=day;
  mm=mounth;
 }
Чтобы программа имела смысл, то следует писать так:
Код:
Sviato(char* nn , int dd , int mm)
 {
  name = nn;
  day = dd;
  mounth = mm;
 }
тут:
Код:
getSviato(char* nn int dd , int mm)
 {
  cout<<"nazva:"<<name<<"_"<<endl;
  cout<<"data:"<<day<<"."<<mounth<<"_"<<endl;
 }
какой смысл в том, что вы этой функции передаете набор параметров, если они потом вообще не используются.

Тут тоже чуток бреда:
Код:
setSviato(char* nn, int dd, int mm)
 {
  cout<<"Vvedite nazvu";cin>>nn;cout<<"\n";
  cout<<"Vvedite datu";cin>>dd;cout<<".";cin>>mm;
};
логика диктует что то типа:
Код:
setSviato()
 {
  cout << "Vvedite nazvu";
  cin >> name

  cout << "Vvedite datu";
  cin >> day;
  
  cout<<"."; //точка как-то не вписывается в общую логику, но пусть будет, если хочется
  cin>>mm;
};
coinkrsk вне форума Ответить с цитированием
Старый 20.10.2010, 11:14   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Ну и еще по поводу конструктора. Сильно подозреваю, что вне класса вы не будете выделять память под name, чтобы передать указатель на нее в конструктор - более того, вы не обязаны это делать. Зато обязаны обеспечить выделение памяти в конструкторе. Ну и еще, прочитайте про список инициализации - лучше использовать его вместо обычного присваивания в теле конструктора.
Код:
class Sviato
{
//...
Sviato(char* nn, int dd, int mm):
 day(dd), month(mm)
 {
 name = new char[strlen(nn) + 1];
 strcpy(name, nn);
 }
//...
};
Но тогда еще надо будет сделать деструктор:
Код:
class Sviato
{
//...
~Sviato()
{
delete[] name;
}
//...
};
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
класс NARTZISS Общие вопросы .NET 10 28.05.2010 20:59
КЛАСС 4ika Общие вопросы C/C++ 1 16.03.2010 21:32
C++ . Класс Ануар56 Помощь студентам 8 23.04.2009 19:41
Класс Юлёк Фриланс 6 15.06.2008 15:00