Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. [Solved] undefined reference to static QString
Forum Updated to NodeBB v4.3 + New Features

[Solved] undefined reference to static QString

Scheduled Pinned Locked Moved General and Desktop
7 Posts 4 Posters 9.5k 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.
  • S Offline
    S Offline
    spode
    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
    • G Offline
      G Offline
      guziemic
      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
      • U Offline
        U Offline
        utcenter
        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
        • S Offline
          S Offline
          spode
          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
            • U Offline
              U Offline
              utcenter
              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
              • S Offline
                S Offline
                spode
                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 Extensions
                • Unsolved