一部の子 (継承クラス) が、親クラスにある特定の作業機能を認識しないようにしたいと考えています。これらをプライベートにすることは、子供たちがこれらの機能を使用できないことを意味することを理解していますが、問題はそれらを見ることです。オートコンプリートに大量の「ジャンク」が表示されるという問題を回避しようとしています。
以上のことを踏まえて、ふと思いつきました。以下のコード。問題は、secretFunc の性質が完全にはわからないということです。これはグローバル関数ですか、それとも何らかの方法で親クラスに属していますか? ヘッダーで宣言されておらず、cpp で定義されているだけです。アイデアは、親にこのようないくつかの作業関数を含めることができ、これらは子クラスから隠されるということです。これを行うためのよりエリートな方法はありますか?あったとしても、secretFunc の性質を理解したいと思います。
#ifndef PARENT_H
#define PARENT_H
class Parent
{
public:
Parent();
~Parent();
private:
void privateFunc();
protected:
void protectedFunc();
public:
void publicFunc();
};
#endif
#include "Parent.h"
//What is the nature of this function???
void secretFunc()
{
}
UnitTest::UnitTest()
{
}
UnitTest::~UnitTest()
{
}
void UnitTest::privateFunc()
{
}
void UnitTest::protectedFunc()
{
}
void UnitTest::publicFunc()
{
}
#ifndef CHILD_H
#define CHILD_H
#include "Parent.h"
class Child : public Parent
{
public:
Child();
~Child();
};
#endif
#include "Child.h"
UnitTest::Child()
{
}
UnitTest::~Child()
{
}
//Auto complete can see private Parent functions!
//Of course, child can't use them, but it can see them.
//I wish to hide these private functions from child.
//Auto complete can see and can also use protected Parent funcitons.
//As should be...
//Auto complete can see and can also use public Parent funcitons.
//As should be...
//secetFunc should be invisible.