私は、boostのmake_shared()とテンプレートクラスの使用に関する多くの質問/回答があることを知りましたが、C++で全く新しいので、探しているものが見つからないようです。 基本的に私は、GenericManagerというマネージャクラスに以下のpublicメンバを持つGenericというクラスを作成しました。テンプレートクラスを使ったboost :: make_shared()
class GenericManager
{
public:
typedef boost::shared_ptr<GeneriClass> GenericClassPtr;
//... more members etc
};
今、私はテンプレートです別のクラスを持っていると私はmake_sharedコールを作成したい、すなわち:
template <class MyType>
SpecificClass<MyType>::...
{
//class members functions etc
};
、その後、私がやりたいの呼び出しは、次のとおりです。
GenericClassPtr SpecificClassFactory::construct()
{
return boost::make_shared<SpecificClass>();
}
どのSpecificClassの非テンプレートバージョンでうまく動作しますが、テンプレートバージョンでは通常のエラーが表示されます:
error: no matching function for call to ‘make_shared()’
どのようにmake_sharedを呼び出すと、テンプレートタイプを受け入れることができますか?今のところ私はC++ 98に固執しています!
編集:@wasthishelpful修正された誤植が修正されました。
'return boost :: make_shared>();'? –
Jarod42
ありがとう@ Jarod42! – nabber