unresolved external symbol linker error with a vector which is a static member variable

Discussion in 'C++' started by Serge, Dec 18, 2004.

  1. Serge

    Serge Guest

    Hi,
    I have no problem creating a static member variable with integers, etc but
    when I try the same with a vector then I always get linker errors that the
    static member variable is unknown (unresolved external symbol)
    Below is what an example of the code I use. Can somebody tell me what I am
    doing wrong ?
    Thanks very much in advance,
    Serge

    //myclass.h
    //header file
    #include <vector>

    using namespace std;

    class myclass
    {
    public:
    static void my_method (int new_value);

    private:
    static vector<int> m_variable_v; //static member variable
    };



    //myclass.cpp
    //cource code class

    #include "myclass.h"

    using namespace std;

    //define static member variables
    vector<int> m_variable_v;


    void myclass::my_method(int new_value)
    {
    m_variable_v.push_back(new_value);
    }
     
    Serge, Dec 18, 2004
    #1
    1. Advertising

  2. Serge

    David Harmon Guest

    On Sat, 18 Dec 2004 16:01:54 +0100 in comp.lang.c++, "Serge"
    <> wrote,
    >//define static member variables
    >vector<int> m_variable_v;


    Should be:
    vector<int> myclass::m_variable_v;
     
    David Harmon, Dec 18, 2004
    #2
    1. Advertising

  3. Serge

    Serge Guest

    Great ! Thanks very much for your quick solution.
    Best regards,
    Serge

    "David Harmon" <> wrote in message
    news:...
    > On Sat, 18 Dec 2004 16:01:54 +0100 in comp.lang.c++, "Serge"
    > <> wrote,
    > >//define static member variables
    > >vector<int> m_variable_v;

    >
    > Should be:
    > vector<int> myclass::m_variable_v;
    >
     
    Serge, Dec 18, 2004
    #3
  4. Serge

    Mike Wahler Guest

    "Serge" <> wrote in message
    news:41c44669$0$13470$...
    > Hi,
    > I have no problem creating a static member variable with integers, etc but
    > when I try the same with a vector then I always get linker errors that the
    > static member variable is unknown (unresolved external symbol)
    > Below is what an example of the code I use. Can somebody tell me what I am
    > doing wrong ?
    > Thanks very much in advance,
    > Serge
    >
    > //myclass.h
    > //header file
    > #include <vector>
    >
    > using namespace std;
    >
    > class myclass
    > {
    > public:
    > static void my_method (int new_value);
    >
    > private:
    > static vector<int> m_variable_v; //static member variable


    This is a declaration, not a definition. No actual object has
    been created. And still no vector object will be created
    if you create a type 'myclass' object, because 'static' means
    that the member is not stored as part of a 'myclass' object,
    but separately, only once. I.e. 'm_variable_v's scope is
    your class, but it is not actually part of a 'myclass' object.

    You need to provide (exactly one)
    definition of your static vector.

    > };
    >
    >
    >
    > //myclass.cpp
    > //cource code class
    >
    > #include "myclass.h"
    >
    > using namespace std;
    >
    > //define static member variables
    > vector<int> m_variable_v;


    Not quite right. This defines a vector which is *not*
    in your class' scope. It has nothing to do with your
    class or any objects of that type.

    vector<int> myclass::m_variable_v;

    > void myclass::my_method(int new_value)


    See how you've qualified 'my_method' as being a member
    of 'myclass' here? Same is required for static data members.

    > {
    > m_variable_v.push_back(new_value);
    > }



    -Mike
     
    Mike Wahler, Dec 18, 2004
    #4
  5. Serge

    Paavo Helde Guest

    "Serge" <> wrote in
    news:41c44669$0$13470$:

    > Hi,
    > I have no problem creating a static member variable with integers, etc
    > but when I try the same with a vector then I always get linker errors
    > that the static member variable is unknown (unresolved external

    [...]
    > //define static member variables
    > vector<int> m_variable_v;


    vector<int> myclass::m_variable_v;

    HTH
    Paavo
     
    Paavo Helde, Dec 19, 2004
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Scott Allen
    Replies:
    8
    Views:
    11,018
    Scott Allen
    May 2, 2004
  2. iwl
    Replies:
    2
    Views:
    636
  3. Laszlo

    [Linker Error] Unresolved external

    Laszlo, Dec 6, 2004, in forum: C Programming
    Replies:
    1
    Views:
    1,237
    -berlin.de
    Dec 6, 2004
  4. Trent
    Replies:
    9
    Views:
    645
    Trent
    Jun 29, 2007
  5. Replies:
    3
    Views:
    270
Loading...

Share This Page