Войти
ФлеймФорумПрограммирование

Вопросы по C++ (6 стр)

Страницы: 15 6 7 8 9 Следующая »
#75
12:49, 27 фев. 2017

=A=L=X=
> По стандарту любой указатель может быть приведен в void * чтобы потом без
> ошибок быть обратно приведенным к оригиналу. Похоже всё таки он что-то сделал
> не так.

Ну да, я тоже про это подумал, что можно сделать (МyClass*)((void*)Ptr).
Но если тип указателя сохранен и приводится к другому несовместимому типу, то компилер может ругаться.

dedm0zaj

Вопрос, так в коде (MyClass*)Ptr  или (MyClass)Ptr  ?
Во втором случае это локальный обьект в статической памяти.


#76
12:51, 27 фев. 2017

dedm0zaj
> в поточной функции преобразовываю поинтер (lpParam) обратно в мой класс. и вот
> тут (MyClass)lpParam не наботает. нужен reinterpret_cast
void* можно преобразовывать static_cast-ом в любой указатель, зачем тут вообще реинтерпрет?

#77
12:53, 27 фев. 2017

dave
> Во втором случае это локальный обьект в статической памяти.

да, конечно (MyClass*)lpParam.
уже путаю с паскалевскими ссылочными классами

#78
12:55, 27 фев. 2017

dedm0zaj
> предоставлю, как дома буду. но лучше пример с потоком, ибо он проще.

Я х/з о чём, ты, я вот специально обмазал класс виртуальным наследованием, чтобы ну совсем и вообще, и как то так вот: http://ideone.com/aDZxUA

#79
12:56, 27 фев. 2017

> (MyClass)Ptr
>локальный обьект

Хотя не, просто хрень будет.

#80
13:56, 27 фев. 2017

Пока искал информацию по соседней теме (про callcc) наткнулся на нежелание компилятора кастовать лямбду к указателю на функцию для вывода типов аргументов.
Нашёлся и хак для обхода: http://ideone.com/Kmmr9B (смотреть на плюс перед списком захвата лямбды)
А нормальные способы есть?

#81
14:01, 27 фев. 2017

dedm0zaj
> допустим создаю поток внутри класса с помощью CreateThread

std::thread ? не, не слышал.

#82
14:26, 27 фев. 2017

Merrewend
> А нормальные способы есть?
Хм, можно немного обернуть хак http://ideone.com/GXgZRo

#83
14:28, 27 фев. 2017

вообще раз такая пьянка пошла... я тоже кое чего не понимаю
вот например
Merrewend
> http://ideone.com/Kmmr9B
там же не правильный перфект форвардинг
правильный вот такой

    template<typename R, typename... Args>
    auto foo( R (*bar)(Args...), Args && ... args)
    {
      return bar(std::forward<Args>(args)...);
    }
иначе смысла в std::forward ноль
а на счет нормальный способ он вот
    template<typename F, typename... Args>
    auto foo( F && f, Args && ... args)
    {
      return std::forward<F>(f)(std::forward<Args>(args)...);
    }

http://ideone.com/dayqxB

#84
14:35, 27 фев. 2017

Kartonagnick
> std::thread
Под ведро уже работают?

#85
14:39, 27 фев. 2017

я на счет форвардинга еще почему интересуюсь.. у этого товарища который callcc пилит...
этот форвардинг в куче мест не правильно заюзан
https://github.com/boostorg/context/blob/develop/include/boost/co… tion.hpp#L346
и практически везде где Arg ... такая фигня...
может я чего та все таки не понимаю?

#86
14:42, 27 фев. 2017

cNoNim
> там же не правильный перфект форвардинг
Каюсь, не силён в универсальных ссылках, бездумно скопипастил отсюда
https://github.com/boostorg/context/blob/develop/include/boost/co… tinuation.hpp

    template< typename ... Arg >
    continuation operator()( Arg ... arg) {
        BOOST_ASSERT( nullptr != t_.fctx);
        auto tpl = std::make_tuple( std::forward< Arg >( arg) ... );

cNoNim
> а на счет нормальный способ он вот
Так не честно )
Ключевые слова были "для вывода типов аргументов"
Вот, например, нам нужно узнать типы аргументов, а вызывать пока не нужно и аргументы для вызова не передаём
http://ideone.com/55pKeW

#87
14:44, 27 фев. 2017

cNoNim
> я на счет форвардинга еще почему интересуюсь.. у этого товарища который callcc
> пилит...
Вот-вот )
Может это из-за того, что везде применяется для передачи в создавалку тупла, а не в пользовательскую функцию с неизвестным типом?

#88
14:44, 27 фев. 2017

Merrewend
> бездумно скопипастил отсюда
так я вот на тот же код смотрю и не пойму может надо пулл реквест бежать писать )

#89
14:47, 27 фев. 2017

вот мой говнокод таймера

*.h

+ Показать

*.cpp

+ Показать

в функции CreateThread третьим параметром передаю this класса, который потом возвращаю в виде параметра IpParam

Страницы: 15 6 7 8 9 Следующая »
ФлеймФорумПрограммирование