Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 1087807
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 16, 20262026-05-16T22:59:15+00:00 2026-05-16T22:59:15+00:00

I have a fairly complex set of C++ classes that are re-written from Java.

  • 0

I have a fairly complex set of C++ classes that are re-written from Java. So each class has a single inherited class, and then it also implements one or more abstract classes (or interfaces).

Is it possible to use qobject_cast() to convert from a class to one of the interfaces? If I derive all interfaces from QObject, I get an error due to ambiguous QObject references. If however, I only have the base class inherited from QObject, I can’t use qobject_cast() because that operates with QObjects.

I’d like to be able to throw around classes between plugins and DLLs referred to by their interfaces.

  • 1 1 Answer
  • 1 View
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-16T22:59:15+00:00Added an answer on May 16, 2026 at 10:59 pm

    After some research and reading the qobject_cast documentation, I found this:

    qobject_cast() can also be used in
    conjunction with interfaces; see the
    Plug & Paint example for details.

    Here is the link to the example: Plug & Paint.

    After digging up the interfaces header in the example, I found the Q_DECLARE_INTERFACE macro that should let you do what you want.

    First, do not inherit QObject from your interfaces. For every interface you have, use the Q_DECLARE_INTERFACE declaration like this:

    class YourInterface
    {
    public:
        virtual void someAbstractMethod() = 0;
    };
    
    Q_DECLARE_INTERFACE(YourInterface, "Timothy.YourInterface/1.0")
    

    Then in your class definition, use the Q_INTERFACES macro, like this:

    class YourClass: public QObject, public YourInterface, public OtherInterface
    {
        Q_OBJECT
        Q_INTERFACES(YourInterface OtherInterface)
    
    public:
        YourClass();
    
        //...
    };
    

    After all this trouble, the following code works:

    YourClass *c = new YourClass();
    YourInterface *i = qobject_cast<YourInterface*>(c);
    if (i != NULL)
    {
        // Yes, c inherits YourInterface
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a fairly complex ASP MVC set of controls that set a data
I have a fairly complex query that will be referencing a single date as
I have a fairly complex multi threaded application (server) that from time to time
For my app, I have a fairly complex set of configuration options that user
I have a fat GUI that it getting fairly complex, and I would like
I have a fairly complex set of rewrite rules to give my site pages
I have a fairly complex database that needs to be deployed to a variety
I have a fairly complex application which has been broken up into multiple components.
I have a fairly complex application in Delphi 2006 that communicates through an ApdComport
I have a fairly complex CLR stored procedure. What is the best way to

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.