我想调用一个只在父源类文件的文件中的类。事实上,我在4个文件中有3个类:
parent.h
parent.cpp
child.h
child.cpp
" main"课程是Child
和Parent
。类Otherclass
位于Parent
类定义上方的parent.h文件中。
如何才能访问仅在child.cpp文件的parent.cpp文件中的类Otherclass
?
(不幸的是,我不允许在父文件中进行大的更改。)
parent.cpp:
using ParentNamespace::Parent;
namespace other
{
class Otherclass
{
public:
Otherclass()
{
// do something
}
~Otherclass()
{
}
};
}
Parent::Parent()...
...
// here the Parent class continues normal
child.cpp:
#include "parent.h"
Child::Child() :
ParentNamespace::Parent()
...
...
...
// here I want to use Otherclass
答案 0 :(得分:6)
我怎样才能访问'Otherclass'类,它只在child.cpp文件的parent.cpp文件中?
你不能。这是头文件的全部目的。使用它们。
(不幸的是,我不允许对父文件进行大的更改。)
现有代码完全破坏,您应该使用此事实成为允许...
...或者这些是您不应该以这种方式尝试使用的内部类。
答案 1 :(得分:1)
您始终可以为OtherClass
创建单独的头文件,将OtherClass
定义(通常在代码中输入的所有代码,而不是非内联函数的代码)复制到那里{ {1}}此标头已#include
。只要你绝对确定它们是相同的,对同一个类有几个定义并不是很糟糕。它也不是一种正确的方法,但是如果你不能将<{1}}定义移动到(某些)头文件,那么你可以复制它到一个新的标题。
虽然当然要问的第一个问题是为什么现有的代码是这样完成的。也许child.h
只是OtherClass
的一个实现细节,可能会在未来的开发中发生变化,而且您不应该使用它。
示例代码(不完全针对您的情况,但说明了如何在没有任何头文件的情况下工作):
OtherClass
构建并按预期工作。但是,将所有定义保持相同是非常困难的,因此这就是标题的用途。