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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2012, 20:00   #1
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию Объявление объекта класса

Всем доброго вечера.
Возник вопрос при объявлении объекта.

Код:
Rational integer1( c, d ),h();// при добавлении скобок к h
	h=integer + integer1;// выводит вот такую ошибку:
	"IntelliSense: expression must be a modifiable lvalue	c:\users\андрей\documents\visual studio 2010\projects\sun\sun\rational.cpp	188"
Объясните, пжлста, в чем разница если объявлять объект без скобок и с оными. Насколько я вижу, что без скобок вызывается конструктор по умолчанию.
Заранее спасибо!
Желание тысяча возможностей, нежелание - тысяча причин
Стремящийся вне форума Ответить с цитированием
Старый 06.05.2012, 20:24   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Разницы, подозреваю, никакой. В обоих случаях должен вызваться конструктор без параметров, ежели оный имеется.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 06.05.2012, 20:27   #3
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию

Имеется конструктор по умолчанию с парметрами.

Код:
Rational ( int=1 , int=2 );
Желание тысяча возможностей, нежелание - тысяча причин
Стремящийся вне форума Ответить с цитированием
Старый 06.05.2012, 20:29   #4
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Наврал, наврал. Rational h() это объявлении функции, возвращающей Rational.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 06.05.2012, 20:36   #5
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию

Насколько я понимаю объявления функции так
Код:
const Rational& Rational::func()
{
тело функции
}
?
Желание тысяча возможностей, нежелание - тысяча причин
Стремящийся вне форума Ответить с цитированием
Старый 06.05.2012, 20:48   #6
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Это реализация. Функцию можно просто объявить, оставив реализацию напотом
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 06.05.2012, 20:55   #7
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию

Согласен, можно так объявить функцию, однако гляньте на формулировку ошибки: выражение должно быть изменяемым. В любом случае это ошибка или так иногда писать можно при объявлении объекта?, подскажите.
Желание тысяча возможностей, нежелание - тысяча причин
Стремящийся вне форума Ответить с цитированием
Старый 06.05.2012, 20:58   #8
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
expression must be a modifiable lvalue
lvalue - выражение, которому можно что-либо присвоить (из названия - то, что слева от знака равно; аналогично есть rvalue). Функция, не возвращающая ссылку, не является lvalue
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 06.05.2012, 21:01   #9
Стремящийся
Форумчанин
 
Аватар для Стремящийся
 
Регистрация: 01.11.2011
Сообщений: 172
По умолчанию

Я кажется начинаю Вас понимать: в main, как и в любой функции, нельзя объявлять другую функцию. Выше указанное выражение находится в main. Я правильно Вас понимаю?
Желание тысяча возможностей, нежелание - тысяча причин

Последний раз редактировалось Стремящийся; 06.05.2012 в 21:03. Причина: Додумал
Стремящийся вне форума Ответить с цитированием
Старый 06.05.2012, 21:22   #10
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Внутри другой функции нельзя делать реализацию другой функции, но можно просто ее объявить, что вы и делаете. Проблема в том, что вы этой функции пытаетесь что-то присвоить.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объявление объекта на всю программу AnDron45 C# (си шарп) 2 08.04.2012 10:41
Конструктор класса не хочет принимать в качестве параметра адрес объекта другого класса Jugger Помощь студентам 3 05.01.2012 04:10
[Java] Создание объекта внутри объекта этогоже класса. Svarogich Помощь студентам 2 01.08.2011 16:03
Объявление объекта класса VCL moongloom C++ Builder 0 02.05.2011 17:16
Объявление метода внутри объекта JAVASCRIPt Kasper1 JavaScript, Ajax 4 09.03.2011 09:50