静态成员指针,有点晕。

gjy19741021 2011-03-31 08:18:49
class A
{
public:
static int *a;



};

int A::*a=0;//初始化

void main()
{
int *p=A::a;//这样引用静态成员指针不对呀,应该怎么引用?


}

静态成员指针,怎么引用呢。
...全文
73 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gjy19741021 2011-03-31
  • 打赏
  • 举报
回复
class A
{
public:
static int a;

int b;
};


int *A::a=0;//意思是初始化静态成员变量指针a,指针a本身就是类A的静态成员。
void main()
{

int A::*a;//意思是声明指针a,指针a要指向的是A类的成员.指针a本身不是A类成员。
a=&A::b;//意思是将A类成员b的地址给指针a.

}



luciferisnotsatan 2011-03-31
  • 打赏
  • 举报
回复
lz不结贴
Wang471981125 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 we_sky2008 的回复:]

引用 5 楼 heartgoon2010 的回复:
引用 2 楼 we_sky2008 的回复:
C/C++ code

class A
{
public:
static int *a;


int i;
};

int A::*a = 0;//这样是定义一个成员指针变量


int main(int argc,char* argv[])
{
int A::*……
[/Quote]
学习一下。。
awsqsh 2011-03-31
  • 打赏
  • 举报
回复
五楼的见解有误。。3楼的代码更加规范
we_sky2008 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 heartgoon2010 的回复:]
引用 2 楼 we_sky2008 的回复:
C/C++ code

class A
{
public:
static int *a;


int i;
};

int A::*a = 0;//这样是定义一个成员指针变量


int main(int argc,char* argv[])
{
int A::*p_mem = a;
a = &A::……
[/Quote]
你没有区分开类的数据成员指针变量和类的数据成员,
只要类体在当前可见,就可以定义类成员指针变量,int A::*a = 0,就是定义一个A的成员指针变量
Primer上解释的很清楚的,建议再看下,
heartgoon2010 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 we_sky2008 的回复:]
C/C++ code

class A
{
public:
static int *a;


int i;
};

int A::*a = 0;//这样是定义一个成员指针变量


int main(int argc,char* argv[])
{
int A::*p_mem = a;
a = &A::i;

……
[/Quote]
太犀利了!
记得书上有说,类的成员必须在类的内部声明。
照你的意思int A::*p_mem 也应该是定义一个成员指针变量了,这样的话,变量p_mem 岂不只有定义没有声明了,求解释。。。
还有这个int A::*a = 0,还有这样定义的呢,实在不明白,求解释
we_sky2008 2011-03-31
  • 打赏
  • 举报
回复
楼主要注意结贴,看你的结贴率还是0呢
结贴率低的话,很多人直接就不回复了!
pengzhixi 2011-03-31
  • 打赏
  • 举报
回复
int* A::a=0;
we_sky2008 2011-03-31
  • 打赏
  • 举报
回复

class A
{
public:
static int *a;


int i;
};

int A::*a = 0;//这样是定义一个成员指针变量


int main(int argc,char* argv[])
{
int A::*p_mem = a;
a = &A::i;

system("pause");
return 0;
}

we_sky2008 2011-03-31
  • 打赏
  • 举报
回复

class A
{
public:
static int *a;



};

int *A::a=0;//这样才是初始化A的静态数据成员


int main(int argc,char* argv[])
{
int *p = A::a;

system("pause");
return 0;
}

33,311

社区成员

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

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