读书人

【奇怪的异常】一个基础的有关问题高

发布时间: 2012-02-06 15:52:44 作者: rapoo

【奇怪的错误】一个基础的问题,高手指教
下面是一个简单的控制台程序,编译出错
#include "iostream.h "
class A;
class B
{
public:
A *m_pA;
void callA()
{
m_pA-> Hello(); // 屏蔽这一行就可以编译通过
}
};

class A
{
public:
void Hello()
{
cout < < "Hello\n ";
}
};

void main()
{
}

请问是什么原因啊?

[解决办法]
#include <iostream>
using namespace std;

class A
{
public:
void Hello()
{
cout < < "hello world " < < endl;
}
};

class B
{
private:
A *m_a;
public:
B()
{
m_a = new A;
}

void call()
{
m_a -> Hello();
}

~B() { delete m_a; }
};


int main()
{
B test;
test.call();
return 0;
}

给你一个可以编译的代码.
这里不能前向声明.因为必须知道类的详细信息.
[解决办法]
编译通过。
[解决办法]
class A
{
public:
void Hello()
{
cout < < "Hello\n ";
}
};

class B
{
public:
A *m_pA;
void callA()
{
m_pA-> Hello(); // 屏蔽这一行就可以编译通过
}
};

换换位置就过了

读书人网 >C++

热点推荐