It seems that you are confused...
登录 | 论坛导航 -> 华新鲜事 -> 社会百科 | 本帖共有 2 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:Flying (等级:18 - 华新水车,发帖:16849) 发表:2003-06-04 14:35:00  楼主  关注此帖评分:
followon questionThanks, VeryGood. The compiler really complains about non-static member functions as shown in error message. My followon question is that: in a class defintion, there are acutally many non-static member function. Here the member function is private, does it matter? Is it possible to define a non-static private member function? TIA
It seems that you are confused...
1) The sample you gave above is NOT a declaration of member function. Instead, the typdef statement simply aliases a data type of member function pointer as "Omf" for the ease of reference.

2) No matter farray is declared as static or not, the syntax is acceptable! That is, there is NO compelling reason that farray must be declared static. Please double check.
Flying @way 吳穎暉
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:Flying (等级:18 - 华新水车,发帖:16849) 发表:2003-06-04 16:13:48  2楼 评分:
1-yes, 2-noI agree with your first point. It is really just aliasing. I had mis-used some words such as static functions. It is not private function. farray is a pointer to array of functions. farray is a private member of class Object. So the problem is that the keyword static is not allowed to be omitted, otherwise compiler complains as shown in the error message [quote] menu1.cpp:17: 'void (Object::* Object::farray[3]()' is not a static member of 'class Object' [/quote] So you see the problem?
I saw your problem. But I don't think that's the
point.

I compiled the following code using g++ version 2.95.2 on Solaris:

class Object {
private:
typedef void (Object::*Omf)();
/*static*/ Omf farray[3];
};

Compilation gave no error. I suppose the error was caused by other factors.
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
论坛导航 -> 华新鲜事 -> 社会百科 | 返回上一页 | 本主题共有 2 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码