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

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

Войти
Регистрация
Восстановить пароль
 
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
#1

Вызов методов класса - C++

28.07.2010, 16:44. Просмотров 969. Ответов 7
Метки нет (Все метки)

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
// practice.cpp : main project file.
 
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
const int size=20;
//========================================
class publication
{
private:
    char name[size];
    double price;
public:
    void getdata ( )
    {
        cout<<"Name<";
        cin.get(name,size);
        cout<<"Price<";
        cin>>price;
    }
    void putdata ( ) const
    {
        cout<<"Name: "<<name<<" $"
            <<fixed<<setprecision(2)<<price
            <<" ";
    }
};
//=========================================
class book : public publication
{
private:
    double pages;
public:
    void getdata ( )
    {
        publication::getdata();
        cout<<"Pages<";
        cin>>pages;
    }
    void putdata ( ) const
    {
        publication::putdata();
        cout<<setprecision(0)<<pages<<" pages"<<endl;
    }
};
//==========================================
class type : public publication
{
private:
    double length;
public:
    void getdata ( )
    {
        publication::getdata();
        cout<<"length<";
        cin>>length;
    } 
    void putdata ( ) const
    {
        publication::putdata();
        cout<<length<<" length"<<endl;
    }
};
//============================================
int main()
{
    book b1,b2;
    b1.getdata();             //этот работает 
    b2.getdata();             //а этот уже нет
    b1.putdata();
    b2.putdata();
    cin.get();
    return 0;
}
Первый обьект класса вызывает метод, а второй уже нет. Помогите разобратся
Ну и конешно если есть другие серьезные ошибки - указывайте
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2010, 16:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вызов методов класса (C++):

Вызов методов класса из двойного указателя на экземпляр класса - C++
Добрый день! Как можно вызвать метод класса по двойному указателя на его экземпляр? struct Point { void getPoint(){}; ...

Вызов методов класса - C++
Здравствуйте! При компиляции программы(в среде CodeBloks) выдается такая ошибка: request for member 'Arrayss:: array_proc' in 'j', which...

Вызов методов производного класса - C++
Возникла проблема с выполнением задачи. программа запускается, работает, но почему-то не выводит метод scan и print наследовательного...

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

Вызов методов производного класса из базового - C++
Возможно ли, чтобы class A { void f1() { f2();//если вызвано из B, то вызывается B::f2(), а не A::f2() } void f2(){} }

Вызов наследуемых методов из базового класса - C++
Всем доброго времени суток, перейду сразу к сути. Код: class Base { protected: public: virtual void...

7
kazak
3050 / 2371 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
28.07.2010, 17:04 #2
Что значит не работает, в чем это заключается?
0
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
28.07.2010, 17:35  [ТС] #3
запрашивается на ввод только первый обьект, потом проскакивает метод формирования для второго обьекта и сразу выводит результат

Вызов методов класса

 Комментарий модератора 
Вставляйте картинки в сообщения.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
28.07.2010, 17:40 #4
cin.get() попробуйте. скорее всего /n в буфере остается
После этого: cin>>pages;
Или cout<<endl;

И кстати.. В книге может быть 255.454 страниц? Зачем pages имеет тип double?
1
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
28.07.2010, 17:50  [ТС] #5
добавление cin.get() в 39-ю строчку помогло, можете обьяснить почему так?
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
28.07.2010, 18:43 #6
Не знаю, в чем там было дело, я просто заменил нелюбимые мною низкоуровневые данные и функции более высокоуровневыми, и все работает:
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
83
84
85
86
87
88
#include "stdafx.h"
 
 
#include <iostream>
#include <iomanip>
#include <string>
 
typedef std::string  T_str;
 
using namespace std;
//========================================
class publication
{
private:        
    T_str  name;
    double price;
public:
    virtual void getdata()
    {
        cout << std::endl 
             << "Name <- ";        
        std::cin >> name;
        cout << "Price <- ";
        cin >> price;
    }
    void putdata() const
    {
        cout << std::endl 
             << "Name: " 
             << name 
             << '\t'
             << " $"
             << fixed 
             << setprecision(2) 
             << price 
             << '\t';
    }
};
//=========================================
class book : public publication
{
private:
    double pages;
public:
    void getdata()
    {
        publication::getdata();
        cout << "Pages <- ";
        cin >> pages;
    }
    void putdata() const
    {
        publication::putdata();
        cout << setprecision(0) << pages << " pages" << endl;
    }
};
//==========================================
class type : public publication
{
private:
    double length;
public:
    void getdata()
    {
        publication::getdata();
        cout<<"length <- ";
        cin >> length;
    } 
    void putdata() const
    {
        publication::putdata();
        cout << length << " length" << endl;
    }
};
//============================================
int main()
{    
    //book b1,b2;
    //type b1,b2;
    book b1;
    type b2;
    b1.getdata();             
    b2.getdata();             
    b1.putdata();
    b2.putdata();
    cin.get();
    return 0;
}
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
29.07.2010, 00:15 #7
Mee, В потоке ввода остается \n или же какой-то другой символ. Следовательно, следующий вызов функции, вставляет \n или какой-то другой символ в поток ввода сразу.
0
kazak
3050 / 2371 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
29.07.2010, 02:34 #8
cin работает с буфером, а не напрямую с клавиатурой. Если буфер пуст, то производится ожидание ввода с клавиатуры, если нет, то сразу обрабатывается буфер. Иногда все содержимое буфера не может быть обработано (например если мы пытаемся записать int'ое число, а ввод кроме цифр содержит символы), поэтому необработанная часть так и остается в буфере. Чтобы сбросит буфер ввода, cin имеет специальный метод - sync().
0
29.07.2010, 02:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2010, 02:34
Привет! Вот еще темы с ответами:

Вызов переопределенного метода из методов базового класса - C++
Здравствуйте, у меня есть два класса, базовый и производный. В производном классе я переопределяю два метода method1 и method2. В базовом...

Реализовать вызов методов класса с помощью указателей на функции - C++
Помогите пожалуйста!!! Есть несколько классов. Необходимо вызывать методы класса с помощью указателей на функции. В методах используется...

Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе работу этих методов - C++
Реализация методов класса. Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе...

Как вынести описание методов вложенного класса за пределы класса? - C++
Подскажите, пожалуйста, как мне вынести описание методов вложенного класса за пределы класса?


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

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

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