Connecting Tech Pros Worldwide Forums | Help | Site Map

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

Serge
Guest
 
Posts: n/a
#1: Jul 23 '05
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);
}



David Harmon
Guest
 
Posts: n/a
#2: Jul 23 '05

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


On Sat, 18 Dec 2004 16:01:54 +0100 in comp.lang.c++, "Serge"
<serge@NOSPAM.com> wrote,[color=blue]
>//define static member variables
>vector<int> m_variable_v;[/color]

Should be:
vector<int> myclass::m_variable_v;

Serge
Guest
 
Posts: n/a
#3: Jul 23 '05

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


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

"David Harmon" <source@netcom.com> wrote in message
news:4227759d.336409703@news.west.earthlink.net...[color=blue]
> On Sat, 18 Dec 2004 16:01:54 +0100 in comp.lang.c++, "Serge"
> <serge@NOSPAM.com> wrote,[color=green]
> >//define static member variables
> >vector<int> m_variable_v;[/color]
>
> Should be:
> vector<int> myclass::m_variable_v;
>[/color]


Mike Wahler
Guest
 
Posts: n/a
#4: Jul 23 '05

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



"Serge" <serge@NOSPAM.com> wrote in message
news:41c44669$0$13470$ba620e4c@news.skynet.be...[color=blue]
> 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[/color]

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.
[color=blue]
> };
>
>
>
> //myclass.cpp
> //cource code class
>
> #include "myclass.h"
>
> using namespace std;
>
> //define static member variables
> vector<int> m_variable_v;[/color]

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;
[color=blue]
> void myclass::my_method(int new_value)[/color]

See how you've qualified 'my_method' as being a member
of 'myclass' here? Same is required for static data members.
[color=blue]
> {
> m_variable_v.push_back(new_value);
> }[/color]


-Mike


Paavo Helde
Guest
 
Posts: n/a
#5: Jul 23 '05

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


"Serge" <serge@NOSPAM.com> wrote in
news:41c44669$0$13470$ba620e4c@news.skynet.be:
[color=blue]
> 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[/color]
[...][color=blue]
> //define static member variables
> vector<int> m_variable_v;[/color]

vector<int> myclass::m_variable_v;

HTH
Paavo
Closed Thread