急问 c++ 的运算符 “.*”和“->*”的用法非常之感谢

hjdlp 2007-04-06 04:35:21
#include <iostream>
using namespace std;

class integer{

public:int *p;
integer (int a)
{
*p=a;
}
};

int main()

{
integer d(5);

d.*p;



}
编译总是错误说p没有定义?不知道为什么,急请教
...全文
305 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzhangyong411 2007-04-10
  • 打赏
  • 举报
回复
LZ是SB
hjdlp 2007-04-09
  • 打赏
  • 举报
回复
谢谢,明白了呵呵
wdz609 2007-04-07
  • 打赏
  • 举报
回复
看看我写的那段程序就应该能明白.*,->*是来做什么用的吧? 呵呵。C++ primer上也有讲道:使用指向类成员的指针-13.6.2这一章节。
merlinfang 2007-04-06
  • 打赏
  • 举报
回复
*(d.p);
liran1229 2007-04-06
  • 打赏
  • 举报
回复
在一本书上看见有.* 说的是取成员指针操作符
->*是指针取成员操作符
但是测试不行。不明白ing ;

二类*d.p 段错误

lz说的成员指针是这样的
比如你定义一个类
class A{
public:
double a;
};
double Box::* h;//声明一个类成员的指针指向类成员a
void main(){
A b;
doube l;
l=b.*h;
A *c;
l=c->*l;
};



C334745710 2007-04-06
  • 打赏
  • 举报
回复

freshui(五月的风)
就是这样,你写 int*p;
没有显式让它指向地址,那么它就可能指向任何地址,
你再*p=a;你想十什么啊!!!!!!!危险!!!!!!!!
wdz609 2007-04-06
  • 打赏
  • 举报
回复
#include "Defines.h"

class A
{
public:
A(int a)
{
//m_p = new int(a);
}
A()
{
//m_p = new int (0);
}
~A()
{
//delete m_p;
}

public:
int m_p;
int m_p2;
};

int _tmain()
{
A *a = new A;
a->m_p = 5;
a->m_p2 = 6;
int A::*b = &A::m_p;
Cout << a->*b << Endl;
b = &A::m_p2;
Cout << a->*b << Endl;
delete a;
}
freshui 2007-04-06
  • 打赏
  • 举报
回复
指针,一定要指向一个东西才能用,不然就会有段错误

比如你有个 int * p;

这是,如果有 int a=0;

你可以把 p= &a;
然后使用p, 没有问题,这时p指向的是a变量占用的内存

或者你自己给p指向一块内存,
p=(int *)malloc(sizeof(int));
这时p指向的是你分配给他的内存,这样也没有问题

如果你只是 int *p;
然后就 *p=1;
这时就麻烦了, p指向的不知道啥地方,这个地方或许是系统关键部分, 你给这地方乱写东西, 系统当然不会让你干的,所以出错.

最好定义指针这样定义 int *p=NULL; 哪都不指,会减少很多麻烦的
呵呵
hjdlp 2007-04-06
  • 打赏
  • 举报
回复
哦谢谢 还有请问*d取什么啊他是一个对象啊
taodm 2007-04-06
  • 打赏
  • 举报
回复
再急也请搬本C++书出来,你这那有指向成员的指针了,当然无法使用.*/->*
wangzhangyong411 2007-04-06
  • 打赏
  • 举报
回复
段错误是因为你的构造函数写错了 应该这么写
integer (int a)
{
p=&a;
}
hjdlp 2007-04-06
  • 打赏
  • 举报
回复
在一本书上看见有.* 说的是取成员指针操作符
->*是指针取成员操作符
但是测试不行。不明白ing ;

二类*d.p 段错误
loongee 2007-04-06
  • 打赏
  • 举报
回复
你定义的是一个指针p,不是*p,引用的时候必须把*去掉,声明的时候*的作用只是告诉编译器p是一个指针,不是一个整型变量。
wangzhangyong411 2007-04-06
  • 打赏
  • 举报
回复
类的实例用. 类的指针用->
wangzhangyong411 2007-04-06
  • 打赏
  • 举报
回复
d.*p; 把*号去掉就可以了,,,,*p不是变量名 你要用的话写*d.p

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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