【奇怪的异常】一个基础的有关问题,高手指教
【奇怪的错误】一个基础的问题,高手指教
下面是一个简单的控制台程序,编译出错
#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(); // 屏蔽这一行就可以编译通过
}
};
换换位置就过了
下面是一个简单的控制台程序,编译出错
#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(); // 屏蔽这一行就可以编译通过
}
};
换换位置就过了