分類:[C/C++]
いつもお世話になっています。Boostを学習中またもや問題にぶち当たってしまいました。
次のサンプルコードでエラーが発生します。
※開発環境はVC++2008Expressです。
#include <string>
#include <boost/call_traits.hpp>
using namespace std;
template<typename T>
class Holder
{
public:
Holder::Holder() {}
boost::call_traits<T>::param_type Holder::get() { return data; } //ここが怪しい
void Holder::set( boost::call_traits<T>::param_type d ) { data = d; }
private:
T data;
};
int main()
{
Holder<int> hint;
hint.set( 100 );
int t = hint.get(); // getやsetは const int で受け渡し
Holder<string> hstr;
hstr.set( "hoge" );
string s = hstr.get(); // getやsetは const string& で受け渡し
return 0;
}
出力されるエラーは次の通りです。
エラー 2 error C2143: 構文エラー : ';' が 'Holder<T>::get' の前にありません。call_traits.cpp 11
エラー 3 error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません call_traits.cpp 11
エラー 4 fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。 call_traits.cpp 11
私が思うに、型指定子に指定したboost::call_traits<T>::param_typeが認識されていないのが問題だと思いましたので、インクルードのパス指定をBoostがトップになるように指定しました。
それでも上記のエラーが出力されます。
このエラーを解決する方法をご存じの方、もしくは気付いた点がある方は教えて下さい。
お手数ですがよろしくお願いいたします
|