Для самого GUI:
PyQT является в значительной степени ссылкой.
Другой способ разработать быстрый пользовательский интерфейс состоит в том, чтобы записать веб-приложение, иметь выполненный локально и отобразить приложение в браузере.
Плюс, если Вы идете для опции Tkinter, предложенной lubos hasko Вы, может хотеть попробовать portablepy для имения выполнения приложения на среде Windows без Python.
Поскольку shared_array
не имеет метода add_ref
, его можно эмулировать следующим образом:
struct MagicDeleter {
MagicDeleter( boost::shared_array<char> ptr ) : ptr(ptr) {};
template<typename T> void operator()(T*) {}
protected:
boost::shared_array<char> ptr;
};
...
boost::shared_array<char> orig_ptr( some_val );
boost::shared_array<const char> new_ptr( orig_ptr.get(), MagicDeleter(orig_ptr) );
Другие ответы верны, вы не можете и не должны.
Кроме того, вы уверены, что хотите boost :: shared_array
, а не const boost :: shared_array
?
На практике это работает:
boost::shared_array<char> acz;
boost::shared_array<const char>& acz2 = reinterpret_cast< boost::shared_array<const char>& >(acz);
НО это плохая идея и работает только в том случае, если boost :: shared_array и boost :: shared_array имеют одинаковую реализацию. Шаблоны могут быть частично специализированными:
template<class T>
struct TwoImplementations {
int m_nIntMember;
};
template<>
struct TwoImplementations< const T > {
double m_fDoubleMember;
};
Выполнение переинтерпретации приведения между TwoImplementations
и TwoImplementations
просто неправильно.
Вы не можете.
Поскольку оба типа основаны на шаблоне, оба типа полностью различны для компилятора.
Я думаю, что вы не можете. Если вам это действительно нужно, вы можете создать собственный класс интеллектуального указателя. Подсказки для этого можно найти здесь .
Вы можете использовать метод get () для получения базового char *, который автоматически преобразуется в const char *, но не назначайте его другому shared_array, потому что тогда у вас будет данные удалялись дважды. Просто используйте его по мере необходимости.
вот так:
boost::shared_array<char> x(new int[13]);
const char *y = x.get();
Такое преобразование, генерируемое компилятором, невозможно.
Внутреннее устройство класс с параметром шаблона, квалифицированным как const, может резко отличаться от класса без него из-за функции специализации шаблона.
Более того, использование такой функции иногда является фоном для проверок во время компиляции, которые могут просто не позволить создание экземпляра ] Тип
для каждого случая, когда тип A
правильный.