C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 45 を表示中)
■24045 / )  型指定子を認識してくれない
□投稿者/ ネタ好き (577回)-(2008/08/27(Wed) 09:12:46)

分類:[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がトップになるように指定しました。
それでも上記のエラーが出力されます。
このエラーを解決する方法をご存じの方、もしくは気付いた点がある方は教えて下さい。
お手数ですがよろしくお願いいたします

返信 編集キー/


管理者用

- Child Tree -