###前提・実現したいこと
pwlibというオープンソースを拾ってきたのですが、下記コンパイルエラーがでました。 CreateFactoryにTheFactoryを渡す場合はCreateFactory<TheFactory>であっているのでしょうか? エラーが出た箇所 return dynamic_cast<TheFactory&>(InternalGetFactory(typeid(TheFactory).name(), CreateFactory<TheFactory>));
###発生している問題・エラーメッセージ
Error: C3035E: non-call site overload (using <nullbinder> for 'PFactoryBase::CreateFactory')
###該当のソースコード
class PFactoryBase { protected: PFactoryBase() { } public: virtual ~PFactoryBase() { } virtual void DestroySingletons() = 0; class FactoryMap : public std::map<std::string, PFactoryBase *>, public PMutex { public: ~FactoryMap(); void DestroySingletons(); }; static FactoryMap & GetFactories(); protected: static PFactoryBase & InternalGetFactory(const std::string & className, PFactoryBase * (*createFactory)()); template <class TheFactory> static PFactoryBase * CreateFactory() { return new TheFactory; } template <class TheFactory> static TheFactory & GetFactoryAs() { return dynamic_cast<TheFactory&>(InternalGetFactory(typeid(TheFactory).name(), CreateFactory<TheFactory>)); } protected: PMutex m_mutex; private: PFactoryBase(const PFactoryBase &) {} void operator=(const PFactoryBase &) {} };
###試したこと
無意味ですがCreateFactory<TheFactory>をCreateFactoryに変更したらその行のエラーは消えたが PFactoryBase(const PFactoryBase &) {}でFatal error: Internal fault: 0xd076と出た。
###補足情報(言語/FW/ツール等のバージョンなど)
言語:C++ コンパイラ:ARM(かなり古い)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/05 00:56