crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Непонятные проблемы с vtable
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 9.8.2009, 21:45
  2 Гость_Гость_*, пользуйся тэгом code
AD Дата 9.8.2009, 21:01
 
Цитата
Короче решил проблему так:

Берите код в кавычки /[code]/[//code/] пожалуйста, чтобы удобнее было читать! Заранее спасибо!
Гость Дата 9.8.2009, 20:57
  Короче решил проблему так:
Factory.h
#define FACTORY_INTERFACE \
virtual QObject * newInstance() const = 0; \
virtual QString getFactoryName() const = 0; \
virtual QString getFactoryDesc() const = 0; \


#define FACTORY(CLASS,CLASSNAME,CLASSDESC) \
public: \
QObject * newInstance() const { return const_cast<QObject *>((QObject *)new CLASS()); }; \
QString getFactoryName() const { return QString(CLASSNAME); }; \
QString getFactoryDesc() const { return QString(CLASSDESC); }; \
private:

ViewFactory.h
class ViewFactory {
public:
FACTORY_INTERFACE
};

Q_DECLARE_INTERFACE(ViewFactory,"com.tisadb.ViewFactory\0.1")

tableview.h
class tableviewFactory : public QObject, public ViewFactory
{
Q_OBJECT
Q_INTERFACES(ViewFactory)
public:
FACTORY(tableview,"TableView", "TableView version 0.1")
};

Конечно не то что хотелось бы, если у кого будут еще сообращения - делитесь
Litkevich Yuriy Дата 9.8.2009, 20:44
 
Цитата(Гость_Михаил_* @ 10.8.2009, 0:05) *
но если пытаюсь сделать более универсальный код
по моему разумению, универсальный код не строится на макросах вообще. Нужно искать решение в методах (шаблонах) проектирования.
BRE Дата 9.8.2009, 20:33
 
Цитата(Гость @ 9.8.2009, 21:21) *
Нет, вижу, действительно может moc виноват, и какой может быть выход?

moc пробегается по исходникам и выбирает классы, в которых есть макрос Q_OBJECT, и для этих классов генерируется специальные файлы moc_*.cpp.
Поэтому, для правильной генерации этих файлов необходимо, что бы moc находил в классе макрос Q_OBJECT, т.е.:
class Obj : public QObject
{
    Q_OBJECT
Гость Дата 9.8.2009, 20:25
  Дык это я уже понял
Litkevich Yuriy Дата 9.8.2009, 20:22
 
Цитата(Гость_Гость_* @ 10.8.2009, 0:16) *
moc - обраватыват только xml
moc вообще их читать не умеет, ты путаешь его либо с rcc либо с uic
Гость Дата 9.8.2009, 20:21
  Нет, вижу, действительно может moc виноват, и какой может быть выход?
Гость Дата 9.8.2009, 20:16
  Тем более судя по исходникам эту подстановку делает не moc а препроцессор GCC, а moc - обраватыват только xml-ки и подставляет из вывод в соответствующие файлы
Гость Дата 9.8.2009, 20:13
  И какой может быть выход?
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 11.7.2025, 5:20