Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > класс


Автор: papam 28.2.2006, 19:25
Скажите почему у меня прога выдает вот ету чепуху: Name1,Pol1,Vozrast-858993460,Telephone-858993460,
подскажите как исправить?Пожалуста.Вот условие:
Разработать класс Person, который содержит соответствующие члены для хранения:
имени,
возраста,
пола и
телефонного номера.
Напишите функции-члены, которые смогут изменять эти члены данных индивидуально. Напишите функцию-член Person::Print(), которая выводит отформатированные данные о человеке.
Вот прога:
Код

#include<iostream.h>
#include<string.h>

class Private
{
public:
    int n,v,p,t;
    
    void Name(char ivan)
    {
        n=ivan;
    }
    void Vozrast(int v)
    {
        v=10;
    }
    void Pol(char man)
    {
        p=man;
    }
    void Telephone(int t)
    {
        t=1234567;
    }
    void Private::Print()
    {
        cout<<"Name"<<n<<"\n"
            <<"Pol"<<p<<"\n"
            <<"Vozrast"<<v<<"\n"
            <<"telephone"<<t<<"\n";
    }
};
void main()
{
    Private pr;
    pr.Name(1);
    pr.Vozrast(1);
    pr.Pol(1);
    pr.Telephone(1);
    pr.Private::Print();

}




Сильно пожалуста не критикуйте,я С++ недавно учу smile

Автор: MAKCim 28.2.2006, 22:08
v и p объекты в методах Vozrast и Pol соответственно не есть поля класса, а есть параметры переданные в эти методы
используй
Код

this->v=v;
this->p=p;

во вторых char - это символ а не строка, хочешь передать строку, используй const char* или std::string или char[]
в третьих у тебя нет никакой инкапсуляции (надо закрыть поля n, v, p, t)
Добавлено @ 22:10
да, кстати, зачем в мнтоды Vozrast и Telephone передавать аргументы и не использовать их?

Автор: ДобренькийПапаша 1.3.2006, 00:50
Вот пример использования класса при считывании из файла, условно:

Код

#include <iostream.h>
void main()
{
    const int l_name = 30, l_year=5, l_pay=10;
    
    struct Man
    {
        int birth_year;
        char name[l_name + 1];
        float pay;
    };
    const int l_dbase = 100;
    Man dbase[l_dbase];

    //Êó÷à ïðåîáðàçîâàíèé, ïîòîì âûâîäèøü ðåçóëüòàòû.
    
    cout << dbase[i].name << dbase[i].pay << dbase[i].birth_year; //Ýòî åñëè ðàáîòà ñ ìàññèâîì
}


Кстати, код у тебя какой-то некрасивый, старайся не писать такие, странный какой-то, невооружённым взгядом видно.

Автор: Goryachev 4.3.2006, 21:13
ты лучше попробуй имя функции Private::Print поменять на Print

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)