分類:[C/C++]
Visual C++ 2010 / Windows 7
お世話になります。
引き継いだコードで下記のようなコードを発見しました。
クラステンプレートの基底クラスが抽象クラスとなっています。
クラステンプレートの基底クラスが抽象クラスであってはならないと記憶していたのですが、
JIS X3014:2003 をざっと読んだところそのような記述はありませんでした。
私の勘違いであればいいのですが、下記コードは仕様的に正しいのでしょうか?
ご教示いただけると嬉しいです。
よろしくお願いします。
class TestBase
{
public:
virtual ~TestBase()
{
}
virtual int FuncA() const = 0;
virtual void FuncB() = 0;
virtual bool FuncC() = 0;
};
template <typename T>
class TestImpl : public TestBase
{
public:
explicit TestImpl(T* p) : p_(p) { }
virtual ~TestImpl() { /* 実装... */ }
virtual int FuncA() const { /* 実装... */ }
virtual void FuncB() { /* 実装... */ }
virtual bool FuncC() { /* 実装... */ }
private:
TestImpl(const TestImpl& rhs); // コピー禁止
const TestImpl& operator =(const TestImpl& rhs); // 代入禁止
T* p_;
};
|