【发布时间】:2014-11-13 16:56:41
【问题描述】:
我想知道我将在下面解释的过程是否被视为标准 c++ 98。
事实上,我有一个 A 类,它有一个名为 B 的私有成员类。为了使所有内容更易于阅读和更合乎逻辑,我希望在 A.h 中声明我的 A 类,在 B.h 中声明我的 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"
---------------------------- B.h ------------------ --------------------------
#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;
}
【问题讨论】:
-
B.h有点无意义,因为它不能与A.h分开包含 - 您需要A的完整定义,而不仅仅是声明,才能使用嵌套类型名称B。除此之外,我没有看到任何明显狡猾的东西——但我也没有看到一个可以回答的问题。您对此代码有什么具体问题或疑问? -
是的,这符合要求。