my thots
登录 | 论坛导航 -> 华新鲜事 -> 社会百科 | 本帖共有 2 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:VeryGood (等级:6 - 驾轻就熟,发帖:738) 发表:2003-06-04 11:55:41  楼主  关注此帖评分:
C++ question: staticExpert, i have a question on static. The partial code is as following: [quote] // in a class Object ... private: typedef void (Object::*Omf) (); static Omf farray[3]; ... [/quote] Here i can't understand why "static" is a must? I have tried to remove "static" but then i get compilation error message: menu1.cpp:17: 'void (Object::* Object::farray[3]()' is not a static member of 'class Object' Here static seems not a lifetime issue. Thanks for you enlightenmen.
my thots
a static member is a class member, while a non-static member is an boject member.

It is hard for the compiler to check validity of the sytax if the member fuction poiter is an object memeber. because the compiler cannot always know the exact memeber function it is pointing to at compile time.
Put your OWN COOL signature here!
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:VeryGood (等级:6 - 驾轻就熟,发帖:738) 发表:2003-06-05 15:09:33  2楼
Other source of error?Flying, i investigate it again. I think the problem may caused by the initialization of farray. In the public part, i defined some public functions, and i initialize the farray with these public functions. Class Object { public: void retrieve() {...} void insert() {...} void update() {...} private: typedef void (Object::*Omf)(); Omf farray[3]; }; Object::Omf Object::farray[3]= { &Object::retrieve, &Object::insert, &Object::update }; &Object::retrieve and such are fixed addresses, so farray must be defined as static, correct? Is this a rule defining a static member? What are the rules for definition of static members? TIA
only a static member can be initialize in this way
you should initialized it in you constructor instead.
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
论坛导航 -> 华新鲜事 -> 社会百科 | 返回上一页 | 本主题共有 2 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码