访问仅在父级的cpp文件中的类

时间:2015-06-11 11:26:01

标签: c++

我想调用一个只在父源类文件的文件中的类。事实上,我在4个文件中有3个类:

parent.h 
parent.cpp 
child.h
child.cpp

" main"课程是ChildParent。类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

2 个答案:

答案 0 :(得分:6)

  

我怎样才能访问'Otherclass'类,它只在child.cpp文件的parent.cpp文件中?

你不能。这是头文件的全部目的。使用它们。

  

(不幸的是,我不允许对父文件进行大的更改。)

现有代码完全破坏,您应该使用此事实成为允许...

...或者这些是您不应该以这种方式尝试使用的内部类。

答案 1 :(得分:1)

您始终可以为OtherClass创建单独的头文件,将OtherClass定义(通常在代码中输入的所有代码,而不是非内联函数的代码)复制到那里{ {1}}此标头已#include。只要你绝对确定它们是相同的,对同一个类有几个定义并不是很糟糕。它也不是一种正确的方法,但是如果你不能将<{1}}定义移动到(某些)头文件,那么你可以复制它到一个新的标题。

虽然当然要问的第一个问题是为什么现有的代码是这样完成的。也许child.h只是OtherClass的一个实现细节,可能会在未来的开发中发生变化,而且您不应该使用它。

示例代码(不完全针对您的情况,但说明了如何在没有任何头文件的情况下工作):

OtherClass

构建并按预期工作。但是,将所有定义保持相同是非常困难的,因此这就是标题的用途。