Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Special Interest Groups
  3. C++ Gurus
  4. C++ - Can't access function in another class
Forum Updated to NodeBB v4.3 + New Features

C++ - Can't access function in another class

Scheduled Pinned Locked Moved Unsolved C++ Gurus
18 Posts 6 Posters 4.0k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    mad-hatter
    wrote on last edited by
    #3

    @koahnig

    Is the associated source file included in the .pro file?

    Yes.

    aha_1980A 1 Reply Last reply
    0
    • M mad-hatter

      @koahnig

      Is the associated source file included in the .pro file?

      Yes.

      aha_1980A Offline
      aha_1980A Offline
      aha_1980
      Lifetime Qt Champion
      wrote on last edited by
      #4

      @mad-hatter please clean your project (worst case: delete build directory), run qmake and build again.

      Qt has to stay free or it will die.

      1 Reply Last reply
      1
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on last edited by
        #5

        Hi,

        Usually, vtable related errors comes after you added or remove the Q_OBJECT macro. Either re-run qmake by hand or do as @aha_1980 suggested: nuke the build folder and re-build.

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        2
        • M Offline
          M Offline
          mad-hatter
          wrote on last edited by
          #6

          Hello,

          Thanks for all your repies.

          Deleted build folder
          Deleted *.pro.usr
          Ran clean
          Ran Qmake
          Ran Rebuild

          Deleted build folder
          Deleted *.pro.usr
          Ran clean
          Ran Qmake
          Ran Build

          same errors,

          Is it something to do with virtual?
          virtual ~QG_CommandEdit()=default;

          Regards

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #7

            Might be a silly question but did you implement your class constructor ?

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            2
            • M Offline
              M Offline
              mad-hatter
              wrote on last edited by
              #8

              @SGaist
              A silly answer, I don't know about class constructors in this context.

              jsulmJ 1 Reply Last reply
              0
              • M mad-hatter

                @SGaist
                A silly answer, I don't know about class constructors in this context.

                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by
                #9

                @mad-hatter said in C++ - Can't access function in another class:

                I don't know about class constructors in this context

                Then you should learn.
                Do you have this in your cpp file:

                QG_CommandEdit::QG_CommandEdit(QWidget* parent=0)
                {
                }
                

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                3
                • M Offline
                  M Offline
                  mad-hatter
                  wrote on last edited by
                  #10

                  Hello,

                  Thanks for your response.
                  I can't change this file as its part of an open source project.

                  @jsulm
                  This is in the qg_commandedit.cpp file.

                  QG_CommandEdit::QG_CommandEdit(QWidget* parent)
                          : QLineEdit(parent)
                          , keycode_mode(false)
                          , relative_ray("none")
                          , calculator_mode(false)
                  
                  {
                      setStyleSheet("selection-color: white; selection-background-color: green;");
                      setFrame(false);
                      setFocusPolicy(Qt::StrongFocus);
                  }
                  

                  Regards

                  K 1 Reply Last reply
                  0
                  • M mad-hatter

                    Hello,

                    Thanks for your response.
                    I can't change this file as its part of an open source project.

                    @jsulm
                    This is in the qg_commandedit.cpp file.

                    QG_CommandEdit::QG_CommandEdit(QWidget* parent)
                            : QLineEdit(parent)
                            , keycode_mode(false)
                            , relative_ray("none")
                            , calculator_mode(false)
                    
                    {
                        setStyleSheet("selection-color: white; selection-background-color: green;");
                        setFrame(false);
                        setFocusPolicy(Qt::StrongFocus);
                    }
                    

                    Regards

                    K Offline
                    K Offline
                    koahnig
                    wrote on last edited by
                    #11

                    @mad-hatter

                    Show the .pro or .pri file where the source "qg_commandedit.cpp" is included.

                    Vote the answer(s) that helped you to solve your issue(s)

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      mad-hatter
                      wrote on last edited by
                      #12

                      @koahnig

                      Pro file

                      TEMPLATE = app
                      
                      DISABLE_POSTSCRIPT = false
                      
                      #uncomment to enable a Debugging menu entry for basic unit testing
                      #DEFINES += LC_DEBUGGING
                      
                      DEFINES += DWGSUPPORT
                      DEFINES -= JWW_WRITE_SUPPORT
                      
                      LC_VERSION="2.2.0-alpha"
                      VERSION=$${LC_VERSION}
                      
                      # Store intermedia stuff somewhere else
                      GENERATED_DIR = ../../generated/librecad
                      # Use common project definitions.
                      include(../../common.pri)
                      include(./boost.pri)
                      include(./muparser.pri)
                      
                      CONFIG += qt \
                          warn_on \
                          link_prl \
                          verbose \
                          depend_includepath
                      
                      QT += widgets printsupport
                      CONFIG += c++11
                      *-g++ {
                          QMAKE_CXXFLAGS += -fext-numeric-literals
                      }
                      
                      GEN_LIB_DIR = ../../generated/lib
                      PRE_TARGETDEPS += $$GEN_LIB_DIR/libdxfrw.a \
                      		$$GEN_LIB_DIR/libjwwlib.a
                      
                      DESTDIR = $${INSTALLDIR}
                      
                      # Make translations at the end of the process
                      unix {
                          LC_VERSION=$$system([ "$(which git)x" != "x" -a -d ../../.git ] && echo "$(git describe --tags)" || echo "$${LC_VERSION}")
                      
                          macx {
                              TARGET = LibreCAD
                              VERSION=$$system(echo "$${LC_VERSION}" | sed -e 's/\-.*//g')
                              QMAKE_INFO_PLIST = Info.plist.app
                              DEFINES += QC_APPDIR="\"LibreCAD\""
                              ICON = ../res/main/librecad.icns
                              contains(DISABLE_POSTSCRIPT, false) {
                                  QMAKE_POST_LINK = /bin/sh $$_PRO_FILE_PWD_/../../scripts/postprocess-osx.sh $$OUT_PWD/$${DESTDIR}/$${TARGET}.app/ $$[QT_INSTALL_BINS];
                                  QMAKE_POST_LINK += /usr/libexec/PlistBuddy -c \"Set :CFBundleGetInfoString string $${TARGET} $${LC_VERSION}\" $$OUT_PWD/$${DESTDIR}/$${TARGET}.app/Contents/Info.plist;
                              }
                          }
                          else {
                              TARGET = librecad
                              DEFINES += QC_APPDIR="\"librecad\""
                              RC_FILE = ../res/main/librecad.icns
                              contains(DISABLE_POSTSCRIPT, false) {
                                  QMAKE_POST_LINK = cd $$_PRO_FILE_PWD_/../.. && scripts/postprocess-unix.sh
                              }
                          }
                      }
                      win32 {
                          TARGET = LibreCAD
                          DEFINES += QC_APPDIR="\"LibreCAD\""
                      
                          # add MSYSGIT_DIR = PathToGitBinFolder (without quotes) in custom.pro file, for commit hash in about dialog
                          !isEmpty( MSYSGIT_DIR ) {
                              LC_VERSION = $$system( \"$$MSYSGIT_DIR/git.exe\" describe --tags || echo "$${LC_VERSION}")
                          }
                      
                          RC_FILE = ../res/main/librecad.rc
                          contains(DISABLE_POSTSCRIPT, false) {
                              QMAKE_POST_LINK = "$$_PRO_FILE_PWD_/../../scripts/postprocess-win.bat" $$LC_VERSION
                          }
                      }
                      
                      DEFINES += LC_VERSION=\"$$LC_VERSION\"
                      
                      # Additional libraries to load
                      LIBS += -L../../generated/lib  \
                          -ldxfrw \
                          -ljwwlib
                      
                      INCLUDEPATH += \
                      HEADERS += ui/lc_actionfactory.h \
                          ....
                          ui/qg_commandedit.h \
                          ... 
                      SOURCES += ui/lc_actionfactory.cpp \
                          ...
                          ui/qg_commandedit.cpp \
                          ...
                      
                      1 Reply Last reply
                      0
                      • sierdzioS Offline
                        sierdzioS Offline
                        sierdzio
                        Moderators
                        wrote on last edited by
                        #13

                        @mad-hatter said in C++ - Can't access function in another class:

                        INCLUDEPATH +=
                        HEADERS += ui/lc_actionfactory.h \

                        Add a newline between these lines! Or rather, remove the INCLUDEPATH entirely.

                        (Z(:^

                        1 Reply Last reply
                        1
                        • M Offline
                          M Offline
                          mad-hatter
                          wrote on last edited by
                          #14

                          @sierdzio

                          Thanks for your reply.
                          I don't want to alter the pro file as it belongs to an open source project that works as it is.

                          Regards

                          1 Reply Last reply
                          0
                          • sierdzioS Offline
                            sierdzioS Offline
                            sierdzio
                            Moderators
                            wrote on last edited by
                            #15

                            It is a bug, at least tell them to fix it if you don't want to do it yourself. If a project is open source, by the way, you do have all the rights to do that modification on your own.

                            (Z(:^

                            1 Reply Last reply
                            4
                            • M Offline
                              M Offline
                              mad-hatter
                              wrote on last edited by
                              #16

                              Hello,

                              @sierdzio

                              INCLUDEPATH +=
                              HEADERS += ui/lc_actionfactory.h \

                              I'm sorry, ' INCLUDEPATH += ' should not be there, its a copy and paste error on my part.

                              Regards

                              1 Reply Last reply
                              0
                              • M Offline
                                M Offline
                                mad-hatter
                                wrote on last edited by
                                #17

                                Hello,

                                I've changed the code and I am left with one error now.
                                Is there something I should add in the header file?
                                Help please!

                                Regards

                                QG_CommandEdit *inst = nullptr;
                                inst->QG_CommandEdit::readCommandFile( where ); //line 248
                                
                                error: undefined reference to `QG_CommandEdit::readCommandFile(QString const&)' // line 248
                                
                                aha_1980A 1 Reply Last reply
                                0
                                • M mad-hatter

                                  Hello,

                                  I've changed the code and I am left with one error now.
                                  Is there something I should add in the header file?
                                  Help please!

                                  Regards

                                  QG_CommandEdit *inst = nullptr;
                                  inst->QG_CommandEdit::readCommandFile( where ); //line 248
                                  
                                  error: undefined reference to `QG_CommandEdit::readCommandFile(QString const&)' // line 248
                                  
                                  aha_1980A Offline
                                  aha_1980A Offline
                                  aha_1980
                                  Lifetime Qt Champion
                                  wrote on last edited by aha_1980
                                  #18

                                  Hi @mad-hatter

                                  Is there something I should add in the header file?

                                  That would help to resolve compile errors, when the compiler cannot find the definition of a function.

                                  Linker errors mean, the linker cannot find the implementation of the function.

                                  Usually this means either the implementation is missing in your source file or you have it in a source file that is not compiled/linked.

                                  Regards

                                  Qt has to stay free or it will die.

                                  1 Reply Last reply
                                  3

                                  • Login

                                  • Login or register to search.
                                  • First post
                                    Last post
                                  0
                                  • Categories
                                  • Recent
                                  • Tags
                                  • Popular
                                  • Users
                                  • Groups
                                  • Search
                                  • Get Qt Extensions
                                  • Unsolved