ПрограммированиеФорумОбщее

С++ не работает friend function! (2 стр)

Страницы: 1 2 3 Следующая »
#15
10:22, 26 июля 2012

-Eugene-
> Красиво

Да, но выше стоит using:

using namespace MYSpace; 

Core * MYSpace::GetCOREInterface()
{
  return new Core();
}

что какбэ намекает...
А вообще это грабли, чистый, не обкуренный мозг сходу не догадается.

#16
10:23, 26 июля 2012

и да, в чем сакраментальный смысл приватного деструктора?

Создать экземпляр Core можно только через GetCOREInterface. т.е. автор хочет единую точку создания этого объекта. Но его реализация неправильная. в там случае нет разницы между конструктором и вызовом GetCOREInterface. Возможно в дальнейшем это будет переделано в синглтон или создание разных реализаций объекта Core. А с приватным деструктором объект может уничтожить себя сам. т.е. гарантированно что внешний код его не убьет.

#17
10:24, 26 июля 2012

satan claws
> и да, в чем сакраментальный смысл приватного деструктора? видимо, должна быть
> friend void UngetCOREInterface()?

нет, есть class Core: public IDisposable, где есть void Dispose(), который delete this )))

#18
10:34, 26 июля 2012

TheGrayWolf

Тыб хоть один пример с созданием чего бы то ни было в неймспейсе посмотрел бы для начала ради приличия.

#19
10:37, 26 июля 2012

=A=L=X=
Где смотреть?

#20
10:40, 26 июля 2012
Изображение
#21
10:41, 26 июля 2012

TheGrayWolf
> нет, есть class Core: public IDisposable, где есть void Dispose(), который
> delete this )))
Нога простреливать себе вы? Серьёзно, зачем такие навороты?

#22
10:44, 26 июля 2012

Я экспериментирую)
А читать некогда, надо писать, писать, писать...

#23
10:58, 26 июля 2012

Всем привет!

Я с новыми граблями. Вот это не компилируется:

  class DllExport Core : public ICore
  {
    friend extern "C" DllExport ICore* __stdcall GetCOREInterface();

Ругается на friend extern "C"

error C2059: синтаксическая ошибка: строка

Оно и понятно, но а как иначе?

#24
11:07, 26 июля 2012

Кто ни будь, зафейспалмите еще.

#25
11:08, 26 июля 2012

Не задавай идиотских вопросов, не получишь не угодных высказываний, а подобные вопросы показывают абсолютное отсутствие знания языка.
И в данный момент ваши темы можно классифицировать только как help me вампиризм. Начните с изучения языка, и не позорьтесь.

#26
11:10, 26 июля 2012

.hpp

namespace MYSpace{

   extern "C" {
      ICore* DllExport GetCOREInterface();
   }

}
class DllExport Core : public ICore { 
    friend ICore* GetCOREInterface();
}

но так лучше не делать. Это некросс-платформенное решение. Если только под винду, то DllExport будет хватать.

#27
11:15, 26 июля 2012

CjCrash
Хм.. заработало. Спасибо!

#28
11:17, 26 июля 2012
Изображение
#29
11:19, 26 июля 2012
Изображение

Не позорься, почитай нормальную книгу лучше.

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.