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

S

Serge

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);
}
 
D

David Harmon

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

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

Mike Wahler

Serge said:
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 said:
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
 
P

Paavo Helde

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
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top