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

Проблема с выводом строки - C++

Восстановить пароль Регистрация
 
pun4er
6 / 6 / 1
Регистрация: 06.10.2010
Сообщений: 122
26.09.2011, 15:06     Проблема с выводом строки #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include<iostream>
#include<string>
#include<conio.h>
#define SIZE 100
using namespace std;
 
class Adress
{
    char fam[SIZE];
    char street[SIZE];
    int dom, kv;
    public:
    void set_fam(char *fam1);
    char get_fam();
    void set_street(char *street1);
    char get_street();
    void set_dom(int dom1);
    int get_dom();
    void set_kv(int kv1);
    int get_kv();
    void show();
};
 
void Adress::set_fam(char *fam1)
{
    strcpy(fam,fam1);
}
 
char Adress::get_fam()
{
    return *fam;
}
 
void Adress::set_street(char *street1)
{
    strcpy(street,street1);
}
 
char Adress::get_street()
{
    return *street;
}
 
void Adress::set_dom(int dom1)
{
    dom=dom1;
}
 
int Adress::get_dom()
{
    return dom;
}
 
void Adress::set_kv(int kv1)
{
    kv=kv1;
}
 
int Adress::get_kv()
{
    return kv;
}
 
void Adress::show()
{
    cout<<"\nAdress Programm";
    cout<<"\nSurname is "<<get_fam();
    cout<<"\nStreet is "<<get_street();
    cout<<"\nHouse number is "<<get_dom();
    cout<<"\nApartment number is "<<get_kv();
    cout<<"\nPress Enter for quit...";
}
void main()
{
    Adress ob;
    ob.set_fam("Ivanov");
    ob.set_street("Lenina");
    ob.set_dom(1);
    ob.set_kv(10);
    ob.show();
    getch();
}
Целые числа выводит нормально, а фамилию и улицу выводит только 1й символ, проблемма где то в объявлении наверное, я запутался, помогите пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
26.09.2011, 15:12     Проблема с выводом строки #2
C++
1
2
3
4
const char* Adress::get_fam()
{
        return fam;
}
по аналогии делай и get_street
pun4er
6 / 6 / 1
Регистрация: 06.10.2010
Сообщений: 122
26.09.2011, 15:15  [ТС]     Проблема с выводом строки #3
Благодарю, работает
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
26.09.2011, 15:39     Проблема с выводом строки #4
А вообще, я бы сделал как-то так (со своими костылями для автоматического определения геттеров-сеттеров):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <string>
 
#define FIELD(type, name) \
private:          \
type        name;     \
public:           \
void set_ ## name (const type& name ## _param)  \
{                       \
    name = name ## _param;          \
}                       \
type get_ ## name () const          \
{                       \
    return name;                \
}                       \
private:                    \
 
 
class address
{
public:
    address(const std::string& _name = std::string(),
        const std::string& _street = std::string(),
        size_t _house_no = size_t(),
        size_t _apartment_no = size_t())
    : name(_name), street(_street), house_no(_house_no),
      apartment_no(_apartment_no) 
    {
    }
 
    FIELD(std::string, name)
    FIELD(std::string, street)
    FIELD(size_t, house_no)
    FIELD(size_t, apartment_no)
};
 
std::ostream& operator << (std::ostream& os, const address& addr)
{
    os << addr.get_name() << std::endl;
    os << addr.get_house_no() << " " << addr.get_street()
       << ", Apt. " << addr.get_apartment_no() << std::endl;
 
    return os;
}
 
int main()
{
    address addr("J. Doe", "Endless", 13, 666);
    std::cout << addr;
        
    return 0;
}
Yandex
Объявления
26.09.2011, 15:39     Проблема с выводом строки
Ответ Создать тему
Опции темы

Текущее время: 10:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru