大家帮我看一下这我的理解对不对?

ny1986 2012-12-25 08:25:17

AdFront2::FrontPoint2 :: FrontPoint2 (const Point<3> & ap, PointIndex agi,
MultiPointGeomInfo * amgi, bool aonsurface)
{
p = ap;
globalindex = agi;
nlinetopoint = 0;
frontnr = INT_MAX-10;
onsurface = aonsurface;

if (amgi)
{
mgi = new MultiPointGeomInfo (*amgi); for (int i = 1; i <= mgi->GetNPGI(); i++)
if (mgi->GetPGI(i).trignum <= 0)
cout << "Add FrontPoint2, illegal geominfo = " << mgi->GetPGI(i).trignum << endl;
}
else
mgi = NULL;
}


如上面所示的代码中红色的部分,其中mgi是MultiPointGeomInfo类型的一个对象(MultiPointGeomInfo * mgi),MultiPointGeomInfo类的定义如下:

#define MULTIPOINTGEOMINFO_MAX 100
class MultiPointGeomInfo
{
int cnt;
PointGeomInfo mgi[MULTIPOINTGEOMINFO_MAX];
public:
MultiPointGeomInfo () { cnt = 0; }
int AddPointGeomInfo (const PointGeomInfo & gi);
void Init () { cnt = 0; }
void DeleteAll () { cnt = 0; }

int GetNPGI () const { return cnt; }
const PointGeomInfo & GetPGI (int i) const { return mgi[i-1]; }
};

这里红色字体部分等号右边应该是动态建立了一个MultiPointGeomInfo类型的对象,通过建立等号,将该对象的起始地址放到指针变量mgi中存放,以便后面使用。但是MultiPointGeomInfo (*amgi)又是什么用法呢?这是一个初始化操作吗?但该类的构造函数是没有参数的,这里应该怎么理解?请大家帮忙看一下,谢谢。
...全文
1201 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-12-31
  • 打赏
  • 举报
回复
引用 8 楼 ny1986 的回复:
引用 7 楼 zhao4zhong1 的回复:VC调试时按Alt+8打开汇编窗口看不明白的类构造或类成员函数调用对应的汇编、单步执行几步后,早晚要打开实际执行时对应子类的构造函数或类成员函数的源代码。这样过一遍不就啥都明白了吗。 不好意思,你说的是反汇编吧,这个太高深了,完全不会。膜拜
不用懂反汇编,在汇编指令上单步执行几步后会自动跳转到实际执行时对应子类的构造函数或类成员函数的C++源代码处。
ny1986 2012-12-30
  • 打赏
  • 举报
回复
暂时结贴,以后慢慢体会
ny1986 2012-12-28
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
VC调试时按Alt+8打开汇编窗口看不明白的类构造或类成员函数调用对应的汇编、单步执行几步后,早晚要打开实际执行时对应子类的构造函数或类成员函数的源代码。这样过一遍不就啥都明白了吗。
不好意思,你说的是反汇编吧,这个太高深了,完全不会。膜拜
赵4老师 2012-12-28
  • 打赏
  • 举报
回复
VC调试时按Alt+8打开汇编窗口看不明白的类构造或类成员函数调用对应的汇编、单步执行几步后,早晚要打开实际执行时对应子类的构造函数或类成员函数的源代码。这样过一遍不就啥都明白了吗。
rocktyt 2012-12-27
  • 打赏
  • 举报
回复
引用 5 楼 ny1986 的回复:
引用 3 楼 zhao4zhong1 的回复:VS IDE中,在不明白的符号上点鼠标右键,选转到定义。 你好,你说的方法我知道。但这里的问题是MultiPointGeomInfo这个类中没有MultiPointGeomInfo (*amgi)这个构造函数。
没有定义的话编译器会自动生成默认构造函数,拷贝构造函数,赋值运算符和析构函数
ny1986 2012-12-27
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。
你好,你说的方法我知道。但这里的问题是MultiPointGeomInfo这个类中没有MultiPointGeomInfo (*amgi)这个构造函数。
ny1986 2012-12-27
  • 打赏
  • 举报
回复
引用 2 楼 hhyhw2001 的回复:
MultiPointGeomInfo类缺少构造函数 MultiPointGemInfo ( MultiPointGeomInfo& );
是的,所以我不懂这里是什么用法?
hhyhw2001 2012-12-26
  • 打赏
  • 举报
回复
MultiPointGeomInfo类缺少构造函数 MultiPointGemInfo ( MultiPointGeomInfo& );
赵4老师 2012-12-26
  • 打赏
  • 举报
回复
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。
乔巴好萌 2012-12-25
  • 打赏
  • 举报
回复
amgi类型是MultiPointGeomInfo * 所以MultiPointGeomInfo (*amgi) 就是调用构造函数 MultiPointGemInfo ( MultiPointGeomInfo & info );

65,186

社区成员

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

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