Я хочу добиться такого поведения, как sizeof (complete_type), вернет реальный sizeof, а sizeof (incomplete_type) - будет просто 0
Мне это нужно, чтобы обеспечить расширенный запуск информация о типе времени для IPC (межпроцессного) взаимодействия со структурой описания для каждого типа:
struct my_type_info
{
bool is_pointer;
size_t size; //for double* will be 4 on i386. that is sizeof(double*)
size_t base_size; //for double* will be 8. that is sizeof(double)
};
Проблема возникает, когда в мою систему входит что-то вроде класса MyOnlyDeclaredClass; Я получил ошибку компиляции, очевидно, по той причине, что я не могу принять ее размер .
boost type_traits http://www.boost.org/doc/libs/1_48_0/libs/type_traits/doc/html/index.html предлагает много классов времени компиляции, но нет 'is_incomplete'
Интересные компиляторы: VS2008, VS2010, clang 3, gcc-4.6, gcc-4.7
-121 --- 17571 84-
Я хотел бы создать пункты меню (в строке меню, а не во всплывающем окне, всплывающем при щелчке правой кнопкой мыши), которые могут вырезать / копировать / вставлять любой выбранный текст.
Эквивалентные клавиатурные команды уже работают, но я ничего не сделал для их включения .Например, я могу ввести текст в поле ввода, вырезать его с помощью Control-X и вставить обратно (или в другое место) с помощью Control-C.
Сообщения по теме, которые я видел, сводятся к вырезанию / копированию / вставке отдельных виджетов, но это уже работает. Как мне активировать элементы меню?
Спасибо.
РЕДАКТИРОВАТЬ: Для ясности, проблемы следующие:
Опять же, ключевые команды для этого (Control-x, Control-c, Control-v) уже работают, и я ничего не сделал. Я умею составлять меню ; вопрос в том, какую команду я должен присоединить к пунктам меню, чтобы добиться желаемого эффекта.
РЕДАКТИРОВАТЬ 2: Хорошо, у меня есть способ, который работает. Поскольку ключевые команды уже работают, мы можем просто их сгенерировать. В моем случае все это записная книжка с именем noteBook, поэтому
lambda: self.noteBook.event_generate ('
сокращается по желанию. Например:
editmenu.add_command (label = "Cut", accelerator = "Ctrl + X", command = lambda: self.noteBook.event_generate ('
Используется: https://github.com/lnmaurer/qubit-control-interface/commit/c08c10a7fbc4a637c1e08358fb9a8593dfdf116e
Тем не менее, вероятно, есть более чистый способ сделать это; ответьте, если вы это знаете.