![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
dandy77 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 18.7.2008 Репутация: нет Всего: нет |
У меня есть два класса:
class CBaseClass { public: CBaseClass(); int x_1; int y_1 SetValue(int x, int y) {x_1=x;y_1=y}; }; CBaseClass::CBaseClass() { x_1=10; y_1=12; } class CDeliveryClass : public CBaseClass { } void main(void) { CDeliveryClass m_Class; m_Class.SetValue(20,14); } Причем как видите я устанавливаю в программе: m_Class.SetValue(20,14); но эта установка не срабатывает- все равно в расчетах в базовом классе используються значения, установленные в конструкторе, то есть 10 и 12: CBaseClass::CBaseClass() { x_1=10; y_1=12; } Что мне делать. Мне именно надо что бы так были переменные и их инициализция размещена в классах. Как мне сделать что бы срабатывало: m_Class.SetValue(20,14); ?????????????????? |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
|
|||
|
||||
dandy77 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 18.7.2008 Репутация: нет Всего: нет |
Дело в том что мне надо что бы конструктор:
class CBaseClass { public: CBaseClass() : x_1(10), y_1(12) { } был не пустой так как еще много инициализируеться других переменных. Это я в общих чертах привел пример свой. |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Ты что-то упустил важное из своего кода. Приведённый тобой код, и код zim22 должны работать одинаково.
|
|||
|
||||
dandy77 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 18.7.2008 Репутация: нет Всего: нет |
Вот так будет точнее:
class CBaseClass { public: CBaseClass(); SetValue(int x=10, int y=12) {x_1=x;y_1=y} protected: int x_1; int y_1 }; CBaseClass::CBaseClass() { x_1=10; y_1=12; } class CDeliveryClass : public CBaseClass { } void main(void) { CDeliveryClass m_Class; m_Class.SetValue(20,14); } |
|||
|
||||
Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
Что выше, что сейчас: синтаксические ошибки (на мой взгляд; компилятору я этот код не подсовывал). После определения CDeliveryClass нет точки с запятой. Нет ее и после объявления переменной y_1. -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Это тоже ничего не меняет. Ты вызываешь m_Class.SetValue(20,14); а не m_Class.SetValue();
Может у тебя есть поля int x_1, int y_1; в CDeliveryClass? Они не инициализируются в SetValue(). Или SetValue() переопределён в CDeliveryClass, а ты не вызываешь CBaseClass::SetValue()? (пользуйся кнопкой Код для оформления своего кода) |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Сколько раз приводили код, а место в котором на Ваш взгляд поведение отличается от ожидаемого скрыли. Где ж те расчеты, которые ведут себя неверно ? P.S. и оформляйте, пожалуйста, код тегами. Поверьте, Вам это будет не трудно, а форумчанам не надо будет ломать глаза и у них будет больше сил и желания на помощь Вам ![]() Это сообщение отредактировал(а) mes - 25.5.2009, 14:08 |
|||
|
||||
dandy77 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 18.7.2008 Репутация: нет Всего: нет |
Спасибо за помощь ребята, я уже сделал, но еще не разобрался. Просто я на DirectX программирую, да еще пример взял из SDK. в SDK пример работает, а мой нет. функцию SetValue() с моими значениями я поместил в функцию рендеринга и все заработало. Теперь она вызываеться не один раз перед запуском приложения, а все время при каждой прорисовке. Почему я еще не знаю. А еще попробывал поместить SetValue() в конструктор CDeliveryClass тоже заработало.
Это сообщение отредактировал(а) dandy77 - 25.5.2009, 14:21 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
потому что в main Вы устанавливаете значения у другого Объекта, не тому, который используется при рендеринге. Для того чтоб разобраться, Вам необходимо понять разницу между классом/типом и объектом. |
|||
|
||||
Cybernetic10 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
||||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
zim22 |
|
||||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
будьте внимательны и отличайте заголовок(объявление) функции от его определения. нижеприведенный код компилироваться не будет, т.к. значения по умолчанию не должны использоваться в определении функции класса
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |