抽象基本クラスがあります。
プライベートでも静的でもテンプレートでもない、通常のパブリックメンバー関数だけのメンバー関数がたくさんあります。
そして、これらの関数がメインのコードによって実行されていない場合でも、他の関数の定義で呼び出されているこれらのパブリック通常関数を定義する必要があることに気付きました。
さらに私の注意を引くのは、クラスが抽象的である場合、クラス自体がインスタンス化されない場合、実際に関数を強制的に定義する必要があるのはなぜですか??
これは私がここに投稿する最初の質問です。うまく説明できなかったり、何か間違ったことをしている場合は申し訳ありません。
よろしくお願いします。
これは、私が話しているクラスの短縮版です。
#ifndef PROCESS_H_INCLUDED
#define PROCESS_H_INCLUDED
#include <iostream>
#include <memory>
using std::weak_ptr;
using std::shared_ptr;
class Process;
typedef shared_ptr<Process> shProcess;
typedef weak_ptr<Process> wProcess;
class Process
{
friend class ProcessManager;
public:
inline void AttachChild(shProcess shChild);
/*
FOR EXAMPLE I CAN LEFT THE FUNCTION ABOVE WITHOUT BEING DEFINE, BUT I HAVE
TO DEFINE THE FUNCTION BELOW OR I GET A COMPILER ERROR
COULD IT BE BECAUSE EVEN IF THIS CLASS IS ABSTRACT I AM USING IT AS A
PARAMETER OF OTHER FUNCTIONS FOR POLIMORPHIC PURPOSES?
*/
shProcess RemoveChild(void){return shProcess();}//reliases ownership of the child
shProcess PeekChild(void){return m_shChild;} //doesn´t release ownership of the child
};
#endif //PROCESS_H_INCLUDED