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. undefined reference to
Forum Updated to NodeBB v4.3 + New Features

undefined reference to

Scheduled Pinned Locked Moved General and Desktop
14 Posts 6 Posters 7.4k 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
    sathism
    wrote on last edited by
    #1

    @#include "video.h"
    #include "networkaccess.h"
    #include <QtNetwork>
    #include "videodefinition.h"

    namespace The {
    NetworkAccess* http();
    }

    Video::Video() : m_duration(0),
    m_viewCount(-1),
    definitionCode(0),
    elIndex(0),
    loadingStreamUrl(false)
    { }

    void Video::preloadThumbnail() {
    if (m_thumbnailUrls.isEmpty()) return;
    QObject *reply = The::http()->get(m_thumbnailUrls.first());
    connect(reply, SIGNAL(data(QByteArray)), SLOT(setThumbnail(QByteArray)));
    }
    @

    Whenever i use the above code im getting the following error
    ./release\video.o:video.cpp:(.text+0x49): undefined reference to `The::http()'

    Can someone help me on this..Thanks in advance.

    1 Reply Last reply
    0
    • V Offline
      V Offline
      vsorokin
      wrote on last edited by
      #2

      @namespace The {
      NetworkAccess* http();
      }@

      You declare this function, but nowhere implemented it.

      --
      Vasiliy

      1 Reply Last reply
      0
      • K Offline
        K Offline
        kamalakshantv
        wrote on last edited by
        #3

        [quote author="sathism" date="1293777356"]@
        namespace The {
        NetworkAccess* http();
        }

        Video::Video() : m_duration(0),
        m_viewCount(-1),
        definitionCode(0),
        elIndex(0),
        loadingStreamUrl(false)
        { }
        @

        [/quote]

        Also what does this lines do. Are they inside any function.

        1 Reply Last reply
        0
        • B Offline
          B Offline
          BlackDante
          wrote on last edited by
          #4

          [quote author="QtK" date="1293783653"]
          [quote author="sathism" date="1293777356"]@
          namespace The {
          NetworkAccess* http();
          }

          Video::Video() : m_duration(0),
          m_viewCount(-1),
          definitionCode(0),
          elIndex(0),
          loadingStreamUrl(false)
          { }
          @

          [/quote]

          Also what does this lines do. Are they inside any function.
          [/quote]

          I think that this is a construct function with list of initialization(i don't sure how it's named in english) from class Video who is in video.h file

          sorry for my broken english :)

          1 Reply Last reply
          0
          • K Offline
            K Offline
            kamalakshantv
            wrote on last edited by
            #5

            [quote author="BlackDante" date="1293791754"]
            [quote author="QtK" date="1293783653"]
            [quote author="sathism" date="1293777356"]@
            namespace The {
            NetworkAccess* http();
            }

            Video::Video() : m_duration(0),
            m_viewCount(-1),
            definitionCode(0),
            elIndex(0),
            loadingStreamUrl(false)
            { }
            @

            [/quote]

            Also what does this lines do. Are they inside any function.
            [/quote]

            I think that this is a construct function with list of initialization(i don't sure how it's named in english) from class Video who is in video.h file [/quote]

            Oh no it seems I am gone blind :) I didn't notice this Video::Video() properly.

            Thank you.

            1 Reply Last reply
            0
            • V Offline
              V Offline
              vsorokin
              wrote on last edited by
              #6

              QtK, BlackDante are right, It's implementation empty constructor with list of initialization values.

              --
              Vasiliy

              1 Reply Last reply
              0
              • K Offline
                K Offline
                kamalakshantv
                wrote on last edited by
                #7

                [quote author="Vass" date="1293792450"]QtK, BlackDante are right, It's implementation empty constructor with list of initialization values.[/quote]

                Yes, As mentioned above I had not noticed it properly. Don't know how I missed it.

                1 Reply Last reply
                0
                • B Offline
                  B Offline
                  BlackDante
                  wrote on last edited by
                  #8

                  This is no problem, sometimes everyone can miss somethink. :) it's in human nature :)

                  sorry for my broken english :)

                  1 Reply Last reply
                  0
                  • G Offline
                    G Offline
                    giesbert
                    wrote on last edited by
                    #9

                    [quote author="Vass" date="1293779836"]@namespace The {
                    NetworkAccess* http();
                    }@

                    You declare this function, but nowhere implemented it.[/quote]

                    This should be the problem. Something like this should solve it:

                    @
                    #include "video.h"
                    #include "networkaccess.h"
                    #include <QtNetwork>
                    #include "videodefinition.h"

                    namespace The {
                    NetworkAccess* http()
                    {
                    return 0;
                    }
                    }

                    Video::Video() :
                    m_duration(0),
                    m_viewCount(-1),
                    definitionCode(0),
                    elIndex(0),
                    loadingStreamUrl(false)
                    { }

                    void Video::preloadThumbnail()
                    {
                    if (m_thumbnailUrls.isEmpty()) return;
                    QObject *reply = The::http()->get(m_thumbnailUrls.first());
                    connect(reply, SIGNAL(data(QByteArray)), SLOT(setThumbnail(QByteArray)));
                    }
                    @

                    Nokia Certified Qt Specialist.
                    Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

                    1 Reply Last reply
                    0
                    • ZlatomirZ Offline
                      ZlatomirZ Offline
                      Zlatomir
                      wrote on last edited by
                      #10

                      Please ignore if you actually want the http to be a function
                      But i have a feeling that the OP didn't want a function there, so here is my explanation about this line of code:
                      @NetworkAccess* http();@
                      The C++ compiler threats all the "things" that might be a function declaration, like there really are function declaration, so the compiler thinks: NetworkAccess pointer is the return type, http is the function name and () the function has no parameters.

                      If you want an object on the stack you will write this:
                      @NetworkAccess http; //no pointer and no () for default constructor
                      @
                      If you want/need to use pointers, you need two objects: the pointer and the object itself, that is done usually by using the operator new to allocate memory and call the constructor of the object (or using the address-of operator to take the address of a previously created object), code (for operator new) looks like this:
                      @NetworkAccess* http = new NetworkAccess(); //here you can have () for default constructor ;)
                      @

                      https://forum.qt.io/category/41/romanian

                      1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        sathism
                        wrote on last edited by
                        #11

                        Thanks for all your valuable replies.
                        @Gerolf
                        I will try your fix ..

                        1 Reply Last reply
                        0
                        • V Offline
                          V Offline
                          vsorokin
                          wrote on last edited by
                          #12

                          [quote author="Gerolf" date="1293806305"]
                          This should be the problem. Something like this should solve it:

                          @
                          #include "video.h"
                          #include "networkaccess.h"
                          #include <QtNetwork>
                          #include "videodefinition.h"

                          namespace The {
                          NetworkAccess* http()
                          {
                          return 0;
                          }
                          }

                          Video::Video() :
                          m_duration(0),
                          m_viewCount(-1),
                          definitionCode(0),
                          elIndex(0),
                          loadingStreamUrl(false)
                          { }

                          void Video::preloadThumbnail()
                          {
                          if (m_thumbnailUrls.isEmpty()) return;
                          QObject *reply = The::http()->get(m_thumbnailUrls.first());
                          connect(reply, SIGNAL(data(QByteArray)), SLOT(setThumbnail(QByteArray)));
                          }
                          @[/quote]

                          Gerolf, you code will be crashed on line 25:
                          @ QObject *reply = The::http()->get(m_thumbnailUrls.first());@
                          because The::http() return null pointer.

                          --
                          Vasiliy

                          1 Reply Last reply
                          0
                          • G Offline
                            G Offline
                            giesbert
                            wrote on last edited by
                            #13

                            It was to show, what is missing. I didn't implement the method, that's something you have to do :-)

                            Nokia Certified Qt Specialist.
                            Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

                            1 Reply Last reply
                            0
                            • V Offline
                              V Offline
                              vsorokin
                              wrote on last edited by
                              #14

                              Gerolf I understood :) I just saw sathism will try your fix, and warned about problem.

                              --
                              Vasiliy

                              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