我想知道我将在下面解释的过程是否被视为标准的c ++ 98。
实际上,我有一个具有私有成员类B的A类。为了使所有内容易于阅读和逻辑化,我想在Ah中声明我的A类,在Bh中声明我的B类。希望我的A类的实现在A.cpp中,而我的B类的实现在B.cpp中。
下面是我用来在VS2012和GCC下编译所有文件的文件(没有任何问题)。出于可读性原因,我没有在此处的.h文件中包括包含保护。
在此先感谢您的帮助。
----------------------------啊--------------------- -----------------------
class A
{
public:
A();
void printFromB();
void createB();
private:
class B;
B* b;
};
#include "B.h"
---------------------------- Bh --------------------- -----------------------
#include <iostream>
class A;
class A::B
{
public:
void print();
};
---------------------------- A.cpp ------------------- -------------------------
#include "A.h"
A::A(){}
void A::printFromB() {
b->print();
}
void A::createB(){
b = new B;
}
---------------------------- B.cpp ------------------- ------------------------
#include "A.h"
using namespace std;
void A::B::print()
{
cout << endl << "B prints!" << endl;
}
-------------------------- main.cpp --------------------- ---------------------
#include "A.h"
int main()
{
A a;
a.createB();
a.printFromB();
return 0;
}
您的代码没有违法行为。
根据定义,你将永远不会使用class B
没有class A
。
但是,正是这个定义问了一个问题:“那为什么还要麻烦创建一个单独的文件?” 由于这是您的项目,因此您可以按自己的意愿进行操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句