Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Взять значение из другого класса? 
:(
    Опции темы
vdm
Дата 5.3.2008, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 16.10.2007

Репутация: нет
Всего: нет



Есть класс А в нем есть public переменная значение которой я указываю сам. Есть класс Б в котором я должен взять значение из класса А, но когда беру значение, выдаёт то, которое устанавливается конструктором. Как поправить, чтобы выдавало то которое я сам уже установил? smile
PM MAIL   Вверх
andrew_121
Дата 5.3.2008, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Брось кусок кода...


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
vdm
Дата 5.3.2008, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 16.10.2007

Репутация: нет
Всего: нет



Цитата(andrew_121 @ 5.3.2008,  09:45)
Брось кусок кода...

А без кода никак? опиши общий вариант, если знаешь ответ?
PM MAIL   Вверх
andrew_121
Дата 5.3.2008, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Вот тебе нужна помощь, а мне приходиться за тебя писать фрагмент кода который ты по каким-то причинам писать нехочешь.
Несправедливо...


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Fazil6
Дата 5.3.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(vdm @  5.3.2008,  09:02 Найти цитируемый пост)
А без кода никак? опиши общий вариант, если знаешь ответ?

 smile 
банальная ошибка в 17-й строке.
PM MAIL   Вверх
Mayk
Дата 5.3.2008, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(vdm @  5.3.2008,  14:02 Найти цитируемый пост)

А без кода никак? опиши общий вариант, если знаешь ответ? 

здесь можно только предполагать. а вдруг потом окажется что догадка не верна(а ведь оно так наверное и есть)? так что нужен отрывок кода на котором даная трабла воспроизводится. 


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
andrew_121
Дата 5.3.2008, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Тебе-то всего 4-и строки из каждого класса выдрать надо, не переживай, 8-м строк у тя никто не украдет !!!
 smile (Во МлЯ, IT-шные баньдюги.) smile 



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
orthrus
Дата 5.3.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

Репутация: нет
Всего: 16



vdm,не выкладывай тут код, за ним все охотятся и обязательно его у тебя украдут smile Посмотри пару постов выше, там Fazil6 нашел ошибку smile 


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
vdm
Дата 5.3.2008, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 16.10.2007

Репутация: нет
Всего: нет



Цитата(orthrus @ 5.3.2008,  14:08)
vdm,не выкладывай тут код, за ним все охотятся и обязательно его у тебя украдут smile Посмотри пару постов выше, там Fazil6 нашел ошибку smile

Да нет, ребята, не в том дело что украдут, просто какой именно вам отрывок нужен? smile там один класс в 600 строк, второй в 300, не хочу флудить. А если выкладывать так придётся и headers отдельно выложить.. какой именно отрывок нужен?
PM MAIL   Вверх
baldina
Дата 5.3.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Код

struct A {
  int a_;
  A(int a) : a_(a);
};

struct B {
   foo (A& var, int newval)
   {
       std::cout << var.a_;
       var.a_ = newval;
    }
};

A a(10);
B b;
b.foo(a,5); // output: 10, a.a_ is 5 now
b.foo(a,0); // output: 5, a.a_ is 0 now



Это сообщение отредактировал(а) baldina - 5.3.2008, 15:03
PM MAIL   Вверх
andrew_121
Дата 5.3.2008, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Код

struct A {
  int a_;
  A(int a) : a_(a);
};

struct B {
   foo (A& var, int newval)
   {
       var.a_ = newval;
       std::cout << var.a_;
    }
};

A a(10);
B b;
b.foo(a,5); // output: 10, a.a_ is 5 now
b.foo(a,0); // output: 5, a.a_ is 0 now

Разницы не замечаешь ?????.......

Добавлено через 3 минуты и 59 секунд
Цитата(vdm @  5.3.2008,  14:59 Найти цитируемый пост)
Да нет, ребята, не в том дело что украдут, просто какой именно вам отрывок нужен?  там один класс в 600 строк, второй в 300, не хочу флудить. А если выкладывать так придётся и headers отдельно выложить.. какой именно отрывок нужен?


Ну если в классе 600-от строк - то имеешь ты несчастье на свою голову.
Почитаю "Декомпозицию" -  в книжках по С/С++



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
vdm
Дата 5.3.2008, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 16.10.2007

Репутация: нет
Всего: нет



В общем вопрос звучит так: 

class CW
{
public:

    CW(void);
               ~CW(void);
    long cvrshow(void)
    long cnr2;
}

long cvrshow(void) {
return cnr2;
}
при нажатии какойто кнопки присвоил значение cnr2

class CPlaneScene  
{
public:
    CPlaneScene();
    virtual ~CPlaneScene();
    CW p_CW;
}
long a = p_CW.cvrshow();

Но почемуто вызывает заново конструктор класса CW и значение теряется. Почему?
PM MAIL   Вверх
baldina
Дата 5.3.2008, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



vdm, выложи 
  • описание переменной в классе А
  • фрагмент конструктора, где она инициализируется
  • описание функции класса В, куда передается объект типа А
  • строка функции В, где значение переменной используется
  • строка в программе (желательно что бы контекст был понятен), где вручную изменяется значение переменной
Добавлено через 2 минуты и 21 секунду
и укажи, что в каком классе определено (контекст). Вызов конструктора наводит на мысль о временном объекте.

Добавлено через 3 минуты и 7 секунд
Код

long a = p_CW.cvrshow();


вот это где и как вызывается?
PM MAIL   Вверх
andrew_121
Дата 5.3.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Эй, это че-за детский сад.
long cnr2 - принадлежиn CW

Код

long cvrshow(void) {
   return cnr2; // а это что-за cnr2 ???
}


p_CW - принадлежит CPlaneScene
Код

long a = p_CW.cvrshow(); // p_CW - это ты откуда взял ???


Читай - Члены класса.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
vdm
Дата 5.3.2008, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 16.10.2007

Репутация: нет
Всего: нет



Цитата(baldina @ 5.3.2008,  15:26)
vdm, выложи 



  • описание переменной в классе А


  • фрагмент конструктора, где она инициализируется


  • описание функции класса В, куда передается объект типа А


  • строка функции В, где значение переменной используется


  • строка в программе (желательно что бы контекст был понятен), где вручную изменяется значение переменной


Добавлено @ 15:28
и укажи, что в каком классе определено (контекст). Вызов конструктора наводит на мысль о временном объекте.

Добавлено @ 15:29
Код

long a = p_CW.cvrshow();


вот это где и как вызывается?


Код


//header класса А:

class СW
{
public:
    long cnr2;
                long  Start(void);
                void  Set(void);
};

//Вот конструктор класса А

CW::CW(void)
{    
cnr2 = 3;
}

long CW::Start()
{
    return cnr2;
}

long CW::Set()
{
    cnr2 = 10;
}


//Класс С:
/* В хедере класса С прописываю хедер класса А */
//Header класса С:
class C1
{
public:

               CW c_CW;
};

//В классе С вызываем функцию, которая назначит значение для cnr2:

с_СW.Set();



//Класс Б:
/* В хедере класса Б прописываю хедер класса А */
//header класса Б:
class CPlaneScene  
{
public:
СW p_CW;
};

/* В классе вызываю Функцию класса СW чтобы получить значение cnr2 которое указал с помощью класса С */

//Но возвращает 3 а не 10. Почему?
long znak = p_CW.Start();




Это сообщение отредактировал(а) vdm - 5.3.2008, 17:07
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.