When a static member variable is declared private in a class, how can it be defined?
Suppose i have the following class declaration
class static_demo { private: static int a; public: static int b; void set(int x, int y) { a = x; b = y; } void show() { cout << "a = " << a << "\n"; cout << "b = " << b << "\n"; } }; Then the following statement to define a will result in compilation error.
int static_demo::a; So is it possible to have a static data member in the private section of class?
Adding full code as per Greg,
#include <iostream> using namespace std; class static_demo { private: static int a; public: static int b; void set(int x, int y) { a = x; b = y; } }; int static_demo::a; int static_demo::b; int main() { static_demo::b = 10; static_demo::a = 20; return 0; } The compilation error is:
static_member_variable.cpp: In function `int main()': static_member_variable.cpp:20: error: `int static_demo::a' is private static_member_variable.cpp:26: error: within this context