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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2010, 19:18   #1
MattStifler
 
Регистрация: 20.04.2010
Сообщений: 5
Печаль Проблема с компиляцией

Доброго времени суток!Мне дали задание написать программу создания:
1)конструктор с параметрами
2)конструктор без параметров
3)конструктор копирования
4)деструктор
В программе необходимо реализовать класс Персона с вводом имени(char* [имя с указателем]),возраста(int)и пола(int[bool] )
При компилировании на Visual C++ выходит ошибка(первый скрин),а при попытки пропустить данную ошибку выходит следующее сообщение(второный скрин)


Вот код программы:

Код:
#include "stdafx.h"

#include <iostream>
#include <string>


using namespace std;

class PERSON {
      public:
      char *name;   //имя
      int age;           //курс
      bool pol;           //пол
             PERSON();   //конструктор без параметров
             PERSON(char*,int,bool); //конструктор с параметрами
             PERSON(const PERSON&); //конструктор копирования
            
             char*GetName();  //метод просмотра имени
             int GetAge();   //метод просмотра курса
             bool GetPol();   //метод просмотра пола
             void Show();          //метод просмотра всех полей
             void SetName(char*n);  //метод установки имени
             void SetAge(int k);    //метод установки курса
             void SetPol(bool p);    //метод установки пола
             void Set(char *n,int k,bool p);  //метод установки всех полей
             ~PERSON();
             };
     PERSON::PERSON ()        //конструктор без параметров
          {
           name=" ";
           cout<<"Конструктор без параметров \n";
          };
     PERSON::PERSON (char *n, int k, bool p) //конструктор с параметрами
     {
                      name=n;
                      age=k;
                      pol=p;
                      cout<<"Конструктор с параметрами \n";
   };
   PERSON::PERSON (const PERSON &b)   //конструктор копирования
   {
        name=b.name;
        age=b.age;
        pol=b.pol;
        cout<<"конструктор копирования \n";
        }
        PERSON::~PERSON()  //деструктор
        {
        name=" ";
        age=0;
        pol=0;
        cout<<"деструктор \n";
        };                      
        
        char* PERSON::GetName() {return name;}; //метод просмотра имени
        int PERSON::GetAge() {return age;}; //метод просмотра курса
        bool PERSON::GetPol() {return pol;}; //метод просмотра пола
        void PERSON::Show()                   //метод просмотра всех полей
        {
             cout<<"Name: " <<name;
             cout<<"Age: " <<age;
             cout<<"Pol: " <<pol;
             };
       void PERSON::SetName(char *n){name=n;};  //метод установки имени  
       void PERSON::SetAge(int k) {age=k;};   //метод устнавки курса
       void PERSON::SetPol(bool p) {pol=p;};    //метод установки пола
       void PERSON::Set(char *n,int k,bool p)
       {
            name=n;
            age=k;
            pol=p;
       };         
       
int main()
{
    char *name;
    int k;
    bool p;
    
 system("cls");
 
    cout <<"Name: "; cin>>name;
    cout <<"Age: "; cin>>k;
    cout <<"Pol: "; cin>>p;
    
    class PERSON a(name,k,p);  //создание объекта класса
                                    //конструктором с параметрами
     cout <<a.GetName()<<"\n";   //вывод полей
     cout <<a.GetAge()<<"\n";   //с помощью методов
     cout <<a.GetPol()<<"\n";     // просмотра   
     
     class PERSON b(a);    //создание объекта класса конструктором копирования
     b.Show();             //метод просмотра всех полей объекта
     
     a.~PERSON();          //удаление объектов деструтором
     b.~PERSON();          
     }
Изображения
Тип файла: jpg 1.jpg (33.0 Кб, 139 просмотров)
Тип файла: jpg 2.jpg (35.6 Кб, 135 просмотров)

Последний раз редактировалось MattStifler; 20.04.2010 в 20:25.
MattStifler вне форума Ответить с цитированием
Старый 21.04.2010, 00:03   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Там же написано Expression invalid null pointer.

Память под указатель char *name; нужно выделить самому!

данные

char *name; //имя + выделить память в конструкторе
int age; //курс
bool pol; //пол

объявить как private
counter вне форума Ответить с цитированием
Старый 21.04.2010, 10:13   #3
MattStifler
 
Регистрация: 20.04.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
Там же написано Expression invalid null pointer.

Память под указатель char *name; нужно выделить самому!

данные

char *name; //имя + выделить память в конструкторе
int age; //курс
bool pol; //пол

объявить как private
а не подскажешь как ее выделять?у меня ошибку выдает,я пытался так
Код:
char *name="";

Последний раз редактировалось MattStifler; 21.04.2010 в 10:22.
MattStifler вне форума Ответить с цитированием
Старый 21.04.2010, 12:04   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Так может вообще лучше std::string? (Смотрю, #include <string> стоит, значит, какие-то мысли были на эту тему.)
Somebody вне форума Ответить с цитированием
Старый 21.04.2010, 14:19   #5
MattStifler
 
Регистрация: 20.04.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
Так может вообще лучше std::string? (Смотрю, #include <string> стоит, значит, какие-то мысли были на эту тему.)
дак мыслей то очень много но они все исчезают после компиляции
MattStifler вне форума Ответить с цитированием
Старый 21.04.2010, 18:27   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Сообщение от MattStifler Посмотреть сообщение
а не подскажешь как ее выделять?у меня ошибку выдает,я пытался так
Код:
char *name="";

char *name=(char*)malloc(SIZE);
// потом освободить
free(name);
counter вне форума Ответить с цитированием
Старый 21.04.2010, 20:52   #7
MattStifler
 
Регистрация: 20.04.2010
Сообщений: 5
Радость

Цитата:
Сообщение от counter Посмотреть сообщение
char *name=(char*)malloc(SIZE);
// потом освободить
free(name);
спасибо громадное,все заработало
MattStifler вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с компиляцией в masm611. subzerro999 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 38 06.03.2010 02:48
Проблема с компиляцией ThisIzGame Общие вопросы C/C++ 2 30.01.2010 12:35
Проблема с компиляцией apocalypce Общие вопросы Delphi 7 02.10.2009 18:31
Проблема с компиляцией С++ Il'9 Помощь студентам 7 12.02.2009 19:18
проблема с компиляцией @gent БД в Delphi 5 11.09.2007 10:09