いくつかのクラスを配置する方法を理解しようとしています。これは私がこれまでに得たものです...
継承階層の最上位は (当然のことながら) T:
(T.h)
namespace foo
{
class T
{
public:
virtual void method1(std::string a_parameter) = 0;
virtual void method2() = 0;
};
}
いくつかの追加メソッドを持つ T の 2 つのサブクラスがあります。ヘッダー ファイルは次のとおりです。
(A.h)
namespace foo
{
class A : public T
{
public:
virtual ~A() {};
virtual void method3() = 0;
//and a factory function
static A* gimmeAnAyy();
};
}
(B.h)
namespace foo
{
class B : public T
{
public:
virtual ~B() {};
virtual void method4() = 0;
//and a factory function
static B* gimmeABee();
};
}
実装クラスは、それぞれの .cpp ファイルにあります。
(A.cpp)
namespace foo
{
class AImpl : public A
{
public:
A(std::string member_data) : m_member_data(member_data) {};
~A() {};
void method3()
{
//something really important, can't think of it right now ;-)
};
private:
std::string m_member_data;
};
A* A::gimmeAnAyy()
{
return new AImpl("this is an impl of A");
};
}
(B.cpp)
namespace foo
{
class BImpl : public B
{
public:
B(std::string other_data) : m_other_data(other_data) {};
~B() {};
void method4()
{
//something really important, can't think of it right now ;-)
};
private:
std::string m_other_data;
};
B* B::gimmeABee()
{
return new BImpl("this is an imll of B");
};
}
今、コンパイラは、私が AImpl と BImpl に実装していない仮想関数 method1() と method2() について不平を言っています。
私が欲しいのは、AImpl と BImpl の両方が継承できる TImpl クラスで、2 つの異なる .cpp ファイルに method1() と method2() を実装する必要はありません。
出来ますか?私は昼食に出かけますか?StackExchange の投稿に対して修辞的な質問をしすぎていませんか?
前もって感謝します、
マイク