I'm doing C++ after along time , i had declared a static variable inside the class as private and as far i know the static variables are independent of objects and shared across the objects .If i try to print the static variable outside the class using a class name i get the compilation errors is this because the variable is private ? I did read that the static variables can be accessed just by the Class name and the scope resolution operator .
#include <iostream>
using namespace std;
class Sample{
    int val;
   static int value;
    public:
        Sample(int in);
        Sample();
        void setval(int in){
            val = in;
        }
        void printval ()const{
            cout << val<<endl;
        }
};
Sample::Sample(int in){
    val = in;
}
Sample::Sample(){
    val = 0;
}
int Sample::value = 34;
int main()
{
   const Sample obj(1);
   Sample obj2;
   obj2.printval();
   obj.printval();
  cout <<"static value = " << Sample::value;
   return 0;
}
Error
main.cpp:37:5: error: 'int Sample::value' is private                                                                                                                                                  
 int Sample::value = 34;                                                                                                                                                                              
     ^                                                                                                                                                                                                
main.cpp:49:39: error: within this context                                                                                                                                                            
   cout <<"static value = " << Sample::value; 
 
     
    