By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,851 Members | 1,047 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,851 IT Pros & Developers. It's quick & easy.

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

P: n/a
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);
}
Jul 22 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a
On Sat, 18 Dec 2004 16:01:54 +0100 in comp.lang.c++, "Serge"
<se***@NOSPAM.com> wrote,
//define static member variables
vector<int> m_variable_v;


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

Jul 22 '05 #2

P: n/a
Great ! Thanks very much for your quick solution.
Best regards,
Serge

"David Harmon" <so****@netcom.com> wrote in message
news:42****************@news.west.earthlink.net...
On Sat, 18 Dec 2004 16:01:54 +0100 in comp.lang.c++, "Serge"
<se***@NOSPAM.com> wrote,
//define static member variables
vector<int> m_variable_v;


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

Jul 22 '05 #3

P: n/a

"Serge" <se***@NOSPAM.com> wrote in message
news:41***********************@news.skynet.be...
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
Jul 22 '05 #4

P: n/a
"Serge" <se***@NOSPAM.com> wrote in
news:41***********************@news.skynet.be:
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
Jul 22 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.