crossplatform.ru

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

История благодарностей участнику aljeshishe ::: Спасибо сказали: 2 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
2.12.2009, 18:18 Странное поведение при множественном наследовании QObject
Цитата(Litkevich Yuriy @ 2.12.2009, 17:49) *
Хм, вроде тут всё относительно просто:

Согласен, сложного ничего.
В моем случае в дереве хранятся объекты разных типов: пользователи содержат папки, которые содержат сообщения
Пользователи при этом используют сигналы/слоты.
В функциях index, data, parent модели приходится определять какой тип текущего узла. Для этого есть тип Node:
#include <QObject>
class Node
{
public:
    enum NType
    {
        N_USER,
        N_FOLDER,
        N_MSG
    };
    Node(NType tp_): tp(tp_){};
    NType getType() const{return tp;}
    void setType(NType tp_){tp = tp_;}
private:
    NType tp;

};

class Folder : public Node
{
public:
    Folder() : Node(Node::N_FOLDER), b(2){};
    int b;
};
class User : virtual public QObject,  public Node
{
public:
    User():Node(Node::N_USER), b(2){};
    int b;
};
class Msg : public Node
{
public:
    Msg():Node(Node::N_MSG), b(2){};
    int b;
};
int main(int argc, char* argv[])
{
    void* p = new Folder;
    Node* node = (Node*)p;
    return 0;
}

Решил использовать виртуальное наследование вместо полиморфности Node(все равботает). Правильно ли это?


Хорошая статься в тему
http://www.devdoc.ru/index.php/content/view/virtual_base.htm
igor_bogomolov, Litkevich Yuriy,

RSS Текстовая версия Сейчас: 29.3.2024, 17:27