Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. [Solved] undefined reference to static QString
Qt 6.12 LTS is out! See what's new in the release blog

[Solved] undefined reference to static QString

Scheduled Pinned Locked Moved General and Desktop
7 Posts 4 Posters 11.2k Views 1 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.
  • ? Offline
    ? Offline
    A Former User
    wrote on last edited by
    #1

    @
    ...//heather
    QString getNewBigliettoToBeWritten();
    void setNewBigliettoToBeWritten(const QString &value);

    private:
    static QString currentSezione, newBigliettoToBeWritten;
    @

    @
    //.cpp file
    ProgramSettings::ProgramSettings(QObject *parent) :
    QObject(parent)
    {
    //vedi metodi in heather
    newBigliettoToBeWritten = QString("");
    currentSezione = QString("");
    }

    QString ProgramSettings::getNewBigliettoToBeWritten()
    {
    return ProgramSettings::newBigliettoToBeWritten;
    }

    void ProgramSettings::setNewBigliettoToBeWritten(const QString &value)
    {
    if(value != newBigliettoToBeWritten && value != QString("") && !value.isNull())
    newBigliettoToBeWritten = value;
    }
    @

    errors:
    @
    ./debug\widget1.o:widget1.cpp:(.text$_ZN15ProgramSettings17setCurrentSezioneE7QString[ProgramSettings::setCurrentSezione(QString)]+0x10): undefined reference to ProgramSettings::currentSezione' ./debug\widget1.o:widget1.cpp:(.text$_ZN15ProgramSettings17setCurrentSezioneE7QString[ProgramSettings::setCurrentSezione(QString)]+0x20): undefined reference to ProgramSettings::currentSezione'
    ./debug\widget1.o:widget1.cpp:(.text$_ZN15ProgramSettings17setCurrentSezioneE7QString[ProgramSettings::setCurrentSezione(QString)]+0x30): undefined reference to ProgramSettings::currentSezione' ./debug\programsettings.o: In function ProgramSettings':
    C:\Users\7-Spode\Documents\Qt-project\Wortfluss-build-simulator-Simulator_Qt_for_MinGW_4_4__Qt_SDK__Debug/../Wortfluss/Utility/programsettings.cpp:11: undefined reference to ProgramSettings::newBigliettoToBeWritten' C:\Users\7-Spode\Documents\Qt-project\Wortfluss-build-simulator-Simulator_Qt_for_MinGW_4_4__Qt_SDK__Debug/../Wortfluss/Utility/programsettings.cpp:12: undefined reference to ProgramSettings::currentSezione'
    C:\Users\7-Spode\Documents\Qt-project\Wortfluss-build-simulator-Simulator_Qt_for_MinGW_4_4__Qt_SDK__Debug/../Wortfluss/Utility/programsettings.cpp:11: undefined reference to ProgramSettings::newBigliettoToBeWritten' C:\Users\7-Spode\Documents\Qt-project\Wortfluss-build-simulator-Simulator_Qt_for_MinGW_4_4__Qt_SDK__Debug/../Wortfluss/Utility/programsettings.cpp:12: undefined reference to ProgramSettings::currentSezione'
    ./debug\programsettings.o:C:\Users\7-Spode\Documents\Qt-project\Wortfluss-build-simulator-Simulator_Qt_for_MinGW_4_4__Qt_SDK__Debug/../Wortfluss/Utility/programsettings.cpp:40: undefined reference to ProgramSettings::newBigliettoToBeWritten' ./debug\programsettings.o:C:\Users\7-Spode\Documents\Qt-project\Wortfluss-build-simulator-Simulator_Qt_for_MinGW_4_4__Qt_SDK__Debug/../Wortfluss/Utility/programsettings.cpp:45: undefined reference to ProgramSettings::newBigliettoToBeWritten'
    ./debug\programsettings.o:C:\Users\7-Spode\Documents\Qt-project\Wortfluss-build-simulator-Simulator_Qt_for_MinGW_4_4__Qt_SDK__Debug/../Wortfluss/Utility/programsettings.cpp:46: undefined reference to ProgramSettings::newBigliettoToBeWritten' ./debug\widgetbiglietti.o:widgetbiglietti.cpp:(.text$_ZN15ProgramSettings17getCurrentSezioneEv[ProgramSettings::getCurrentSezione()]+0x10): undefined reference to ProgramSettings::currentSezione'
    @

    1 Reply Last reply
    0
    • ? Offline
      ? Offline
      A Former User
      wrote on last edited by
      #2

      Static members should be defined outside constructor, because the are not connected with any instance of class. For instance you have "here":http://stackoverflow.com/questions/3531060/how-to-initialize-a-static-member-in-c information how to initialize such variable.

      1 Reply Last reply
      0
      • ? Offline
        ? Offline
        A Former User
        wrote on last edited by
        #3

        Just move the static member initialization outside of the class, somewhere in the cpp.

        @QString ProgramSettings::currentSezione = "bla bla";@

        1 Reply Last reply
        0
        • ? Offline
          ? Offline
          A Former User
          wrote on last edited by
          #4

          nothing:

          @
          ProgramSettings::ProgramSettings(QObject *parent) :
          QObject(parent)
          {
          //vedi metodi in heather
          QString ProgramSettings::currentSezione = "";
          QString ProgramSettings::newBigliettoToBeWritten = "";
          }
          @

          errors:
          @
          ..\Wortfluss\Utility\programsettings.cpp: In constructor 'ProgramSettings::ProgramSettings(QObject*)':
          ..\Wortfluss\Utility\programsettings.cpp:11: error: invalid use of qualified-name 'ProgramSettings::currentSezione'
          ..\Wortfluss\Utility\programsettings.cpp:12: error: invalid use of qualified-name 'ProgramSettings::newBigliettoToBeWritten'
          @

          1 Reply Last reply
          0
          • napajejenunedk0N Offline
            napajejenunedk0N Offline
            napajejenunedk0
            wrote on last edited by
            #5

            Static class variables should be initialized outside all methods:

            @
            //vedi metodi in heather
            QString ProgramSettings::currentSezione = "";
            QString ProgramSettings::newBigliettoToBeWritten = "";

            ProgramSettings::ProgramSettings(QObject *parent) :
            QObject(parent)
            {
            }@

            or

            @
            //vedi metodi in heather
            QString ProgramSettings::currentSezione;
            QString ProgramSettings::newBigliettoToBeWritten;

            ProgramSettings::ProgramSettings(QObject *parent) :
            QObject(parent)
            {
            }@

            1 Reply Last reply
            0
            • ? Offline
              ? Offline
              A Former User
              wrote on last edited by
              #6

              [quote author="spode" date="1348582503"]nothing:
              [/quote]

              Well, you are still initializing the strings in the constructor, I said outside of the class in the cpp. You only changed the assignment parameter from a QString to a string literal (const char*). You cannot use static members if they are not defined, you try to define them in the constructor, which counts for usage, which is not possible if they are not defined.

              1 Reply Last reply
              0
              • ? Offline
                ? Offline
                A Former User
                wrote on last edited by
                #7

                solved. thank you so much! =)

                1 Reply Last reply
                0

                • Login

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