[c++] вложенные классы, как правильно определить?
Но вообще оно ок.
/*-----------Outer.h--------*/если я правильно понял ты хочешь шаблон pointer to implementation, он же файрвол компилятора
class Outer
{
private:
class Inner;
Inner *pImpl;
}
/*-----------Outer.cpp------*/
class Outer::Inner
{
public:
void do;
Inner;
}
void Outer::do {...};
http://www.insidecpp.ru/patterns/pimpl_idiom/ вот тут неплохо написано
да, хочу скрыть "под капот", но при этом приходится использовать треды и пару вспомогательных класса
UPD: приват класс-треды не получилось - meta object....
ты треды в подобную хрень попробуй завернуть, если хочешь спрятать привязки к платформе.
если первое, то не получится, если второе - то можно.
кошерно ли делать так:
class MyClass : QObject {
Q_OBJECT
MyClass {
MyThread* thread = new MyThread;
this->moveToThread(thread); // !
connect(thread, SIGNAL(signal this, SLOT(_slot;
thread->start;
}
public slots:
void slot;
}
class MyThread : QThread {
run {
//do_some_hard_work
emit signal;
}
signals:
void signal;
}
т.е. в конструкторе привязывать объект к только что созданному треду?
скажу честно - не знаю, с Qt-тредами работал совсем чуть-чуть
ps
один из отчетливых признаков владения: кого надо прибить первым, чтобы второй прибился автоматически.
именно в данном коде, мне не нравится, что не понятно: кто кем владеет? MyThread владеет MyClass-ом? или MyClass владеет MyThread?надо попробовать и так, и так - предвижу веселье
именно в данном коде, мне не нравится, что не понятно: кто кем владеет? MyThread владеет MyClass-ом? или MyClass владеет MyThread?как кошерно-то делать?
мне нужно создать тред, который выполняет кучу работы и сигналит о ее прогрессе
мне нужно создать тред, который выполняет кучу работы и сигналит о ее прогрессеНу и пусть себе делает, зачем moveToThread вообще использовать в данном случае?
Почитай http://qt-project.org/wiki/Threads_Events_QObjects, что ли...уже прочитал
сейчас реализовал все в виде worker объектов, которые закидываю в тред
http://labs.qt.nokia.com/2010/06/17/youre-doing-it-wrong/#co...
вот более-менее нормальный способ, как я понял
Оставить комментарий
PooH
так правильно?
есть сомнения, что нормально сработает с private nested class
реализовывать Inner в виде inline не хочется, потому что есть уюеждение, что в хэдэр-файлах не должно быть логики