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


Автор: Syltan 7.10.2009, 16:34
Попробывал использовать функции поза классами, они не компилятся.

Код

#include <iostream>
using namespace std;
 
class Vechicle{
        int passengers;
        int fuelcap;
        int mpg;
public:
        Vechicle():passengers(0),fuelcap(0),mpg(0) { }
        Vechicle(int p, int f, int m):passengers(p), fuelcap(f), mpg(m) { }     
        
 
        int  range()
        {
                return mpg * fuelcap;
        }
    int get_pessengers();
        int get_fuelcap();
        int get_mpg();
 
        
};
 
int Vechicle::get_pessengers()
{
        return passengers;
}
 
int Vechicle::get_fuelcap()
{
        return fuelcap;
}
 
int Vechicle::get_mpg()
{
        return mpg;
}
 
 
int main()
{
        Vechicle minivan(7,16,21);
        Vechicle sportscar(2,14,12);
 
        int range1,range2;
        range1 = minivan.range();
        range2 = sportscar.range();
 
        setlocale(0,"");
        cout<<"Манифургон может перевезти "
                <<minivan.get_pessengers
                <<" пассажиров на расстояние "<<range1
                <<" киллометров. "<<'\n';
 
        cout<<"Спортивный автомобиль  может перевезти "
                <<minivan.get_pessengers
        <<" пассажира на расстояние "<<range2
        <<" киллометров"<<'\n';
 
        cin.get();
}

Автор: zim22 7.10.2009, 16:38
первая ошибка здесь

cout<<"Манифургон может перевезти "
                <<minivan.get_pessengers()

Автор: Syltan 7.10.2009, 16:41
Спасибо, упустил.  Скажите, это получается,что доступ к закрытым переменным класса, можно получить только через функции, и без разницы где они описаны, в самом классе, или за классом, правильно я понял?

Автор: zim22 7.10.2009, 16:43
Цитата(Syltan @  7.10.2009,  16:41 Найти цитируемый пост)
правильно я понял?

да

Автор: Syltan 7.10.2009, 16:46
А функции обязательно должны быть членами этого класса,или это неважно, чтоб получить доступ к закрытым переменным класса?

Автор: zim22 7.10.2009, 16:47
Цитата(Syltan @  7.10.2009,  16:46 Найти цитируемый пост)
А функции обязательно должны быть членами этого класса,

могут быть членами другого класса. или глобальными функциями. но они должы быть друзьями.

Автор: Syltan 7.10.2009, 18:13
Код
Инкапсуля́ция — свойство языка программирования, позволяющее объединить данные и код в объект и скрыть реализацию объекта от пользователя.


Хорошо,если возьмём такой код:

Код

class A {
 private:
   int a,b;//скрытые свойства
   void Do_Something(void);//скрытый метод.
 public:
   int Return_Something(void); //открытый    интерфейс
 };


Класс А инкапсулирует свойства a, b и метод Do_Something, представляя внешний интерфейс Return_Something.
1)Скажите, реализацию какого объекта мы скрываем от пользователя?
2)
Код
позволяющее объединить данные и код в объект

Какой объект, экземпляр закрытого класса приват,созданный в главной функции мэин?

Автор: zim22 7.10.2009, 19:30
Цитата(Syltan @  7.10.2009,  18:13 Найти цитируемый пост)
1)Скажите, реализацию какого объекта мы скрываем от пользователя?

реализацию объекта класса А
Цитата(Syltan @  7.10.2009,  18:13 Найти цитируемый пост)
Какой объект, экземпляр закрытого класса приват,созданный в главной функции мэин?

ничего не понимаю... 
переформулируй другими словами

Автор: Syltan 7.10.2009, 20:17
Код

 позволяющее объединить данные и код в объект и скрыть реализацию объекта от пользователя.



1)Какие данные имеются ввиду из того, небольшого кода выше.
2)Какой объект в моём коде имеется ввиду?

Автор: zim22 7.10.2009, 21:14
Цитата(Syltan @  7.10.2009,  20:17 Найти цитируемый пост)
1)Какие данные имеются ввиду из того, небольшого кода выше.

Цитата(Syltan @  7.10.2009,  18:13 Найти цитируемый пост)
 int a,b;//скрытые свойства


Цитата(Syltan @  7.10.2009,  20:17 Найти цитируемый пост)
2)Какой объект в моём коде имеется ввиду?

объект - это экземпляр класса. значит объект того класса, от которого он инстанциирован.
***
мне кажется вопросы уже пошли не по теме. 
правило такое: один вопрос - одна тема.

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