类的静态成员函数如何调用成员变量??(大侠请指教)

CatomyF 2004-11-22 09:59:17
class Test
{
public:
.........
static void print();
private:
int x,y;
};
.........
void Test::print()
{
cout<<"x:"<<x<<endl //illegal reference to data member 'Test::x' in a static member function
<<"y:"<<y<<endl;
}
.........
void main()
{
Test a;
Test::print();
}

编译时出错
error:illegal reference to data member 'Test::x' in a static member function

静态成员函数不能调用成员变量吗?
如果能,应该如何写呢?
请大侠指教........................
谢谢~~~~~~
...全文
520 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cememe 2004-11-23
  • 打赏
  • 举报
回复
class Test
{
public:
.........
static void print(Test a);
private:
int x,y;
};
.........
void Test::print(Test a)
{
cout<<"x:"<<a.x<<endl //illegal reference to data member 'Test::x' in a static member function
<<"y:"<<a.y<<endl;
}
.........
void main()
{
Test a;
Test::print(a);
}
menubutton 2004-11-23
  • 打赏
  • 举报
回复
的确,类的静态成员函数只能调用静态成员变量.
newegg2002 2004-11-23
  • 打赏
  • 举报
回复
类的静态成员函数只能调用静态成员变量,
因为类的静态成员一般不需要生成该类的对象就可以调用,而其他非静态的数据成员则
必须有对象生成才初始化,所以调用它们是非法的,,
CatomyF 2004-11-23
  • 打赏
  • 举报
回复
谢谢~~
CatomyF 2004-11-23
  • 打赏
  • 举报
回复
谢谢大家 谢谢~
Squall1009 2004-11-23
  • 打赏
  • 举报
回复
因为静态成员函数不依存于任何类的对象,所以只能调用静态变量
allywin 2004-11-23
  • 打赏
  • 举报
回复
在静态函数中的参数表中加一个类参数,通过对象访问数据成员.
Agemo 2004-11-23
  • 打赏
  • 举报
回复
非静态成员函数之所以可以调用非静态成员变量,是因为函数的第一个参数是this,调用函数的地方都会传进一个this指针,而这个this指针就是指向某一实例化的类对象,通过这个实例化过的类对象访问成员变量,而静态成员函数并没有传进实例化过的类对象指针,你怎么访问呢?这也就是你在调用非静态成员函数时一定要通过一个实例化过的类对象来访问,就是为了告诉编译器在这边把哪个实例化过的类对象的指针传给这个函数,而调用静态成员函数的时候,就不需要实例化过的类对象,因为根本不用传实例指针进去。
sharkhuang 2004-11-23
  • 打赏
  • 举报
回复
当然不能了!你想想果类没实例化。成员变量重哪里来?
icecools 2004-11-22
  • 打赏
  • 举报
回复
不能,静态成员函数只能访问类静态变量

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧