テンプレートベースのファクトリーとファクトリーレジスター factory.h に問題があります。
#ifndef INCLUDED_FACTORY
#define INCLUDED_FACTORY
#include <map>
#include <string>
#include <boost/shared_ptr.hpp>
namespace common_utils {
template<class bT>
class Creator
{
public:
virtual bT* create() = 0;
};
template <class bT>
struct CreatorPtr
{
typedef boost::shared_ptr< Creator<bT> > type;
};
template <class bT, class cT>
class CreatorImpl : public Creator<bT>
{
public:
virtual bT* create() { return new cT; }
};
factory_register.h
#ifndef INCLUDED_FACTORYREGISTER
#define INCLUDED_FACTORYREGISTER
#include <factory.h>
namespace common_utils {
template<class eT, class bT, class cT>
class FactoryRegister
{
public:
FactoryRegister();
private:
FactoryRegister(const FactoryRegister&) {};
FactoryRegister& operator=(const FactoryRegister&) {};
};
} // namespace common_utils
今、私はそのようなコンパイルエラーを受け取ります:
factory_register.h: コンストラクター 'common_utils::FactoryRegister::FactoryRegister()': factory_register.h:15: エラー: 予想される `;' 'creator' factory_register.h:16 の前: エラー: 'creator' はこのスコープで宣言されていませんでした
CreatorPtr<bT〉::type
認識されていないようです。誰でも洞察を提供できますか?ありがとう。