[Qt-interest] QtPlugin - Multiple Inheritance Problem

Julian Thomé frostisch at yahoo.de
Mon Jan 18 14:34:16 CET 2010


Hello List. 

I have the following problem. I'm writing an qt-application for creating users/groups on ldap. It is possible to write plugins
for my application. For the communication between the main application and the plugin i use a container object (KockpitUser). The plugin receives
the container object and its attributes should be displayed. The container object inherits from multiple classes. 

class KockpitUser : public QObject, virtual public KockpitUnit, virtual public KockpitAccount, virtual public KockpitContact, virtual public KockpitBackendEntry {
....

The interface class:
----------------------------------------------------------8< snip
    class KockpitIfaceUser {
        public:
            virtual ~KockpitIfaceUser() { }
            virtual QWidget* getWidget() = 0;
            virtual QString getName() = 0;
            virtual void showAttributes(KockpitUser *kuser) = 0;
            virtual void assignAttributes(KockpitUser *kuser) = 0;
    };
  
  ---------------------------------------------------------->8snap
 The header of the plugin:
 
 ----------------------------------------------------------8< snip
     class Samba: public QWidget, public KockpitIfaceUser, public Ui::sambaForm {
        Q_OBJECT
        Q_INTERFACES(KockpitIfaceUser)
    
        public:
            Samba(QWidget *parent = 0);
            QWidget* getWidget();
            QString getName();
            void showAttributes(KockpitUser *kuser);
            void assignAttributes(KockpitUser *kuser);
    };
---------------------------------------------------------->8snap

 If the funktion showAttributes(KockpitUser* kuser) (shown below) is called from the main application it crashed.
 
 Hint: getDomain and getSid are inherited from KockpitAccount
   ----------------------------------------------------------8< snip
 void Samba::showAttributes(KockpitUser *kuser){
    lineEditDomain->setText(kuser->getDomain());
    lineEditSidUser->setText(kuser->getSid());
}
 ---------------------------------------------------------->8snap
 
 The error ist as follows:
 
 ----------------------------------------------------------8< snip
symbol lookup error ... undefined symbol: _ZNK14KockpitAccount9getDomainEv
---------------------------------------------------------->8snap

If i access KockpitUser-attributes which are not inherited from BaseClasses it works.

It would be very nice if someone could help me with that problem.

Thank you very much.

Hello List. 

I have the following problem. I'm writing an qt-application for creating users/groups on ldap. It is possible to write plugins
for my application. For the communication between the main application and the plugin i use a container object (KockpitUser). The plugin receives
the container object and its attributes should be displayed. The container object inherits from multiple classes. 

class KockpitUser : public QObject, virtual public KockpitUnit, virtual public KockpitAccount, virtual public KockpitContact, virtual public KockpitBackendEntry {
....

The interface class:
----------------------------------------------------------8< snip
    class KockpitIfaceUser {
        public:
            virtual ~KockpitIfaceUser() { }
            virtual QWidget* getWidget() = 0;
            virtual QString getName() = 0;
            virtual void showAttributes(KockpitUser *kuser) = 0;
            virtual void assignAttributes(KockpitUser *kuser) = 0;
    };
  
  ---------------------------------------------------------->8snap
 The header of the plugin:
 
 ----------------------------------------------------------8< snip
     class Samba: public QWidget, public KockpitIfaceUser, public Ui::sambaForm {
        Q_OBJECT
        Q_INTERFACES(KockpitIfaceUser)
    
        public:
            Samba(QWidget *parent = 0);
            QWidget* getWidget();
            QString getName();
            void showAttributes(KockpitUser *kuser);
            void assignAttributes(KockpitUser *kuser);
    };
---------------------------------------------------------->8snap

 If the funktion showAttributes(KockpitUser* kuser) (shown below) is called from the main application it crashed.
 
 Hint: getDomain and getSid are inherited from KockpitAccount
   ----------------------------------------------------------8< snip
 void Samba::showAttributes(KockpitUser *kuser){
    lineEditDomain->setText(kuser->getDomain());
    lineEditSidUser->setText(kuser->getSid());
}
 ---------------------------------------------------------->8snap
 
 The error ist as follows:
 
 ----------------------------------------------------------8< snip
symbol lookup error ... undefined symbol: _ZNK14KockpitAccount9getDomainEv
---------------------------------------------------------->8snap

If i access KockpitUser-attributes which are not inherited from BaseClasses it works.

It would be very nice if someone could help me with that problem.

Thank you very much.



__________________________________________________
Do You Yahoo!?
Sie sind Spam leid? Yahoo! Mail verfügt über einen herausragenden Schutz gegen Massenmails. 
http://mail.yahoo.com 





More information about the Qt-interest-old mailing list