C++ 构造函数问题

Timor君 发布于 2012/05/30 16:51
阅读 768
收藏 0
#include <iostream>
using namespace std;

class B;
class A
{
public:
 A() 
 {
 m_pB = new B(this);
 cout << "construct A ..." <<endl;
 }

private:
 B* m_pB;
};

class B
{
public:
 B(A* pa):m_pA(pa){}

private:
 A* m_pA;
};

int main()
{
 A* p = new A;

 cout << "where is the bug?" << endl;

 return 0;
} 

//----------------------------------------------------------------------------------------------------
在vc6.0中的错误信息:
Compiling...
main.cpp
F:\Code\mem\main.cpp(11) : error C2514: 'B' : class has no constructors
        F:\Code\mem\main.cpp(4) : see declaration of 'B'
帮忙解决一下。
加载中
0
johnzhang68
johnzhang68
#include <iostream>
using namespace std;

class A;
class B
{
public:
B(A* pa):m_pA(pa){}

private:
A* m_pA;
};

class A
{
public:
A() 
{
m_pB = new B(this);
cout << "construct A ..." <<endl;
}

private:
B* m_pB;
};


int main()
{
A* p = new A;

cout << "where is the bug?" << endl;

return 0;
Timor君
Timor君
回复 @johnzhang68 :学习了,也理解了,多谢指点。
johnzhang68
johnzhang68
回复 @cghy2011 : class A用到了class B的构造函数,需要class B的完整的定义,但是class B的定义在这之后。class A只是用到了指向class A 的指针,所以不需要class A的完整的定义。
Timor君
Timor君
是我想要的代码。 能告诉我这是C++的哪个知识点吗?
0
0
周翼翼
周翼翼

楼上是对的.

看完这个代码,我对C语言的喜欢又多了一点点.

别喷我,不和你们吵.

周翼翼
周翼翼
回复 @cghy2011 : 所以,我喜欢C又多一点.
Timor君
Timor君
我这个是C++代码吧
0
cuialei
cuialei
这个问题提的好!需要仔细分析彩看的出来啊
返回顶部
顶部