Как правильно передавать объекты?

 

Проблема объединить ссылки на один объект.

Так только:

Obj1ClassB= Obj2ClassB =new ClassB();

Если передаю функции, то без ошибок от компилятора, но и не объединяются:

ClassB*  Obj1;

 void  Exchange(ClassB & obj)

  {  Obj1ClassB =obj;  } 

Что  происходит при передаче такой функции объекта  - не понимаю. 

Так же возникает вопрос - что с указателем на замещенный объект? Он подлежит удалению delete перед затиранием. 

 

Вот предупреждения по объектам. Они что то делают опасное?

3 leaked strings left

1 undeleted objects left

1 object of type PrintMessage left

20992 bytes of leaked memory


Из разных библиотек хочу использовать один объект

 

вам долго не отвечают - потому что в приведённом фрагменте написан бред. Где там объект, где ссылка, где указатель. И фрагмента недостаточно чтобы что-то такое сказать. 

---

предупреждение типа приведённых, возникают если не был вызван delete для объектов созданных через new

не очень хорошо, допустимо только на стадии творчества, проб и ошибок ;-) 

 
Maxim Kuznetsov #:

вам долго не отвечают - потому что в приведённом фрагменте написан бред. Где там объект, где ссылка, где указатель. И фрагмента недостаточно чтобы что-то такое сказать. 

---

предупреждение типа приведённых, возникают если не был вызван delete для объектов созданных через new

не очень хорошо, допустимо только на стадии творчества, проб и ошибок ;-) 

"изменения после выхода из функции в объекте сохраняются , но если переприсваивали указатель в функции - то сам указатель возвращается к старому значению."

видно дело в этом. Нужно упростить и проверить

 
vbymrf #:

"изменения после выхода из функции в объекте сохраняются , но если переприсваивали указатель в функции - то сам указатель возвращается к старому значению."

видно дело в этом. Нужно упростить и проверить

у вас путаница где объект, где ссылка, где указатель и что с ними делать - чёрт ногу сломит и по фрагментам неясно..функции не при чём

 
Maxim Kuznetsov #:

вам долго не отвечают - потому что в приведённом фрагменте написан бред. Где там объект, где ссылка, где указатель. И фрагмента недостаточно чтобы что-то такое сказать. 

---

предупреждение типа приведённых, возникают если не был вызван delete для объектов созданных через new

не очень хорошо, допустимо только на стадии творчества, проб и ошибок ;-) 

передать  по ссылке объект пишут можно. У меня непонимание. Если я объявляю Class1 cl - то это что? Ссылка? А если  Class1* cl - указатель?

 
vbymrf #:

передать  по ссылке объект пишут можно. У меня непонимание. Если я объявляю Class1 cl - то это что? Ссылка? А если  Class1* cl - указатель?

если Class * name <--- это указатель. 

если звёздочки нет, то объект.

 
Maxim Kuznetsov #:

если Class * name <--- это указатель. 

если звёздочки нет, то объект.

передавая указатель по ссылке что  я получу?

 
vbymrf #:

передавая указатель по ссылке что  я получу?

если скажу что "синоним времени компиляции", вам это сильно поможет ? :-)

приведите проблемный код более-менее целиком и опишите замысел/умысел, чего подскажем. 

 

Объявление

CArrayObj   *m_bars; // выборка баров для анализа

Инициализация (создание)

m_bars = new CArrayObj();

Передача в качестве параметра

if (UTerminal::CopyBars(m_symbol, m_period, truncTime, MAX_BARS, m_bars)) {
    // tratata
}

Объявление в других функциях

static bool CopyBars(string symbol, tframe period, datetime dt1, datetime dt2, CArrayObj *bars);

Удаление объекта (желательно в том модуле, в котором он был создан). Лучше всего в деструкторе

delete m_bars;
 
Maxim Kuznetsov #:

у вас путаница где объект, где ссылка, где указатель и что с ними делать - чёрт ногу сломит и по фрагментам неясно..функции не при чём

Да и у меты самой со ссылками и указателями черт ногу сломит. ) string& по факту является wchar_t*. До сих пор не могу понять откуда путаница между ссылками и указателями. Указатели и ссылки не могут быть переданы в куче мест.