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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2012, 16:07   #11
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от KoctR Посмотреть сообщение
Шашки и шахматы две совершенно разные игры, а С и С++ по сути похоже.
1. с и с++ это два принципиально разных языка.
2. Причем тут вообще си, если ты пытался писать на с++ в терминах языка Objective C?

Груши и яблоки тоже "по сути фрукты", только что бы вырастить грушу, за ней нужно ухаживать, как за грушей, а не как за яблоней.

Твоя ошибка была в том, что тупо не знаешь синтаксиса языка.
На с++ принципиальны понятия собственности класса.

класс::переменная - это собственность всего класса, а не объекта.

объект.переменная - это собственность объекта, а не класса.

this->переменная - это собственность объекта, а не класса. Причем доступ к данным осуществляется субъективно (сущность изнутри себя осуществляет доступ к собственным компонентам).

Причем, изнутри класса писать this->переменная не обязательно, можно проще: переменная .

Но иногда, можно наступить на грабли.


Цитата:
Сообщение от KoctR Посмотреть сообщение
И метод этот работает. Вот исправленый код если вам интересно...
Код:
void CBus::compare(CBus input)
{
	float n = litters;
	float m = input.getLitters();

	if(n < m)
		{cout << "Bus number " << number << " consumes less fuels than bus number " << input.getNumber() << endl;}
	else if (n > m)
		{cout << "Bus number " << number << " consumes more fuels than bus number " << input.getNumber() << endl;}
	else
		{cout << "Bus number " << number << " and " << input.getNumber() << " consume same ammount of fuel"  << endl;}
}
Отлично все работает. Проблемма заключалась только в названии функции. Я сменил void CBus(CBus input) на void CBus::compare(CBus input), и заработало.

Ну неет. То что ты забыл прописать квалифицированное имя метода - это ерунда на самом деле. Можно сказать "опечатка".

У тебя проблема была в доступе к данным объектов. Смотри:

Исправленный вариант:
float n = litters;
float m = input.getLitters();


Оригинальный вариант:
Код:
         if(input.getLitters() < CBus::litters)
Ничего такого не замечаешь?
_Bers вне форума Ответить с цитированием
Старый 25.03.2012, 17:22   #12
KoctR
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 16
По умолчанию

Да да, я извиняюсь за тупость... Почитал учебник в очередной раз и теперь въехал.

Спасибо за разъяснение.
KoctR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как привязать функцию к классу? minamoto Общие вопросы Delphi 26 25.08.2011 16:08
Как из класса B обратиться к классу A, владеющему классом B? Ferrum26 Общие вопросы Delphi 14 24.06.2010 09:46
Как узнать какому классу принадлежит объект? boris-blade Общие вопросы .NET 3 08.04.2010 01:08
Параметр классу? Непонятный с++. jojahti Общие вопросы C/C++ 4 16.10.2009 08:55
Как через свич раздать по классу Инет soktahan Свободное общение 4 16.11.2008 10:54