8

Visual Studio 2010 の tr1 機能を使い始めるにはどうすればよいですか? より具体的なケースでは、std::tr1::function が必要です。#include <tr1/functional>欠落しているレポートを含めてみまし#include <functional>たが、問題はありませんが、これを設定すると:

std::tr1::function<void(void)> callback;

私は得る:

1>d:\marmalade\projects\core\src\button.h(21): error C3083: 'tr1': the symbol to the left of a '::' must be a type
1>d:\marmalade\projects\core\src\button.h(21): error C2039: 'function' : is not a member of '_STL'
1>d:\marmalade\projects\core\src\button.h(21): error C2143: syntax error : missing ';' before '<'
1>d:\marmalade\projects\core\src\button.h(21): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\marmalade\projects\core\src\button.h(21): error C2238: unexpected token(s) preceding ';'

ブーストを使用すると問題なく動作しますが、このプロジェクトでは、特定のフレームワークを使用しているため、Visual Studio tr1 バージョンが必要です。

示唆されているように、tr1 をスキップしても同じ結果が返されます。

std::function<void(void)> callback;

1>d:\marmalade\projects\core\src\button.h(20): error C2039: 'function' : is not a member of '_STL'
1>d:\marmalade\projects\core\src\button.h(20): error C2143: syntax error : missing ';' before '<'
1>d:\marmalade\projects\core\src\button.h(20): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\marmalade\projects\core\src\button.h(20): error C2238: unexpected token(s) preceding ';'
4

2 に答える 2

8

あなたのコメントとこのページに基づいて、マーマレードには独自の STL 実装が付属していると思いますが、それは時代遅れに見えます。 このページでは、2005 年にリリースされた TR1 をサポートしていないバージョンのSTLPortを使用していることを確認しています。オプションは次のとおりです。

1) それらを自分でコピー/書き込み
2) なしで実行
3) STLPort の新しいバージョンをダウンロードします。過去 2 年間更新されていないように見えるため、C++11はありませfunctionalんが、. ただし、これはマーマレードでは機能しない可能性があるため、バックアップを作成して注意してください.stdstd::tr1

于 2012-05-01T19:57:06.560 に答える
2

Visual Studio 2010 には、既定で有効になっている C++11 (または少なくとも実装されているもの) が付属しています。を使用する必要がありますstd::function<void(void)>

完全な表については、こちらを参照してください

余談ですが、最近は TR1 のものは使用しないでください。これは、新しい標準に統合されています。

于 2012-05-01T19:18:48.593 に答える