C++中静态函数访问

C++中静态函数访问,c++,C++,我有一个带有私有静态成员变量和用于访问私有静态变量的静态函数的类 #include<iostream> using namespace std; class staticMem { private: static int myval; public: static int getmyval() { return myval; } //static void setmyval(int a) //{ //myval=a; //} }; int

我有一个带有私有静态成员变量和用于访问私有静态变量的静态函数的类

#include<iostream>
using namespace std;

class staticMem
{
  private:
  static int myval;

 public:

 static int getmyval()
  {
  return myval;
 }

  //static void setmyval(int a)
 //{
  //myval=a;
 //}

};

int staticMem::myval =10;

int main()
{
  int x;
  //staticMem::setmyval(10);
  cout<<"the value is"<<staticMem::getmyval()<<endl;
  cin>>x;

}
它工作得很好。 但是我想用静态函数来设置这个值,我试过了,但是不起作用

#include<iostream>
using namespace std;

class staticMem
{
  private:
  static int myval;

 public:

 static int getmyval()
  {
  return myval;
 }

 static void setmyval(int a)
 {
  myval=a;
 }

};


int main()
{

  staticMem::setmyval(10);
  cout<<"the value is"<<staticMem::getmyval()<<endl;

}
编辑
很抱歉,我给出了错误的问题。其已更新,请检查是否需要定义静态成员,因此至少需要在类的声明后添加以下行:

int staticMem::myval;

你到底期望什么?您可以调用staticMem::setmyval10;因此,调用后的值仍然是10这是一个无用的问题。也许您可以在上展开一点,但它不会起作用。也许它不会以不起作用的方式起作用?您的cin调用只是设置局部变量x。如果要设置myval,需要使用staticMem::setmyvalx;跟随cin行;。因此,我们首先不能自己为静态成员提供值。我想补充一点,您需要在源文件中而不是在头文件中这样做。初始化变量通常也是一个好主意。