游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2864|回复: 5

问一个C++类的嵌套调用的问题,最近很困扰

[复制链接]

25

主题

82

帖子

82

积分

注册会员

Rank: 2

积分
82
发表于 2007-9-9 15:19:00 | 显示全部楼层 |阅读模式
A先用简单的代码说明一下:
首先声明两个CLASS;
class A
{
.....
public:
A(){}
fun(){}
.....
};
然后实例化类A
A *a= NEW A;


class B
{
public:
A *m_pA;
B(A *p){m_pA = p;}
void fun(){m_pA->fun();}
};

然后实例化B  ;
B *b = new B(a);
在调用b->fun()的时候 总是会出现错误
具体是说b->fun函数里面的m_pA这个指针是错误,没有值。
而且我确实监视过m_pA这个指针,在函数里为错误指针,但是在B的构造函数中检测,给m_pA复制的时候,m_pA却是有值的,既然m_pA是类内的变量,为什么在函数调用的时候会出现指针错误呢,难道会自己改变?
C++貌似没学好似的,好郁闷啊,这几天。

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2007-9-9 16:22:00 | 显示全部楼层

Re:问一个C++类的嵌套调用的问题,最近很困扰

  1. #include <iostream>

  2. class A {
  3. public:
  4.         A() {}
  5.         ~A() {}
  6.         void func() { std::cout << "A" << std::endl; }
  7. };

  8. class B {
  9. public:
  10.         B(A* pA) { m_pA = pA; }
  11.         ~B() {}
  12.         void func() { m_pA->func(); }
  13. private:
  14.         A* m_pA;
  15. };

  16. int main() {
  17.         A* a = new A();
  18.         B* b = new B(a);
  19.         b->func();

  20.         return 0;
  21. }
复制代码


没有任何问题~

18

主题

82

帖子

86

积分

注册会员

Rank: 2

积分
86
发表于 2007-9-9 17:29:00 | 显示全部楼层

Re:问一个C++类的嵌套调用的问题,最近很困扰

我试了一下, 发现没有任何问题啊!lz贴上全部代码吧!

5

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2007-9-10 15:40:00 | 显示全部楼层

Re:问一个C++类的嵌套调用的问题,最近很困扰

如果楼主真的贴出了所有的程序 那么你自己看看  你是怎么实力化A的 又是怎么实例化B的
lz实例化A的时候是  A *a = new A ;  是不是少了个()

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2007-9-10 15:54:00 | 显示全部楼层

Re:问一个C++类的嵌套调用的问题,最近很困扰

"new A"就是"new A()" ~

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2007-9-19 21:09:00 | 显示全部楼层

Re:问一个C++类的嵌套调用的问题,最近很困扰

不好意思,上面说的恐怕是错误的。
详见:http://blog.vckbase.com/bruceteen/archive/2007/09/17/29493.html
虽然我的编译器(GCC4.1.2)测试结果是2个0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-14 23:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表