2017-07-04 50 views
-7

rhapsodyを使用して構造体にスマートポインタを定義しようとしましたが、すでにヘッダーファイル "memory"が含まれています。しかし、私はC++、エラー:名前空間 'std'の 'shared_ptr'がテンプレートタイプの名前ではありません

typedef std::shared_ptr<my_structure> %s; 
+5

「%」は何をしていますか?コンパイラはそれを受け入れないことは間違いありません。 – Rakete1111

+0

今後の質問では、完全なサンプルプログラムとエラーを含める必要があります。 – jodag

+0

私はshared_ptrを意味していましたが、それは正常に動作しませんでした –

答えて

6

上のエラーを得たveは私はあなたがstd::shared_ptrなくstd::shared意味だと思います。

%は、C++の型名では無効です。


あなたの意図は、タイプエイリアスを作成することであるならば、あなたはこの

using MyType_t = std::shared_ptr<my_structure>; 

ような何かを行う必要があり、あなたの目的はタイプstd::shared_ptr<my_structure>の変数を作成することである場合は、この

を行う必要があります
std::shared_ptr<my_structure> ptr; 
+0

あなたは正しいです、私はstd :: shared_ptrを意味しました –

+0

@ sahbi.m編集した答えを見てください – Curious

+0

'typedef std :: shared_ptr MyType_t'は同等です「MyType_t = std :: shared_ptr を使用する」へ – Justin

-2

不要% アクセス指定子は通常printf( "%s"、arg)に%で始まります。

ベストウェイは です。std :: shared_ptr ptr;

+0

「%s」はアクセス指定子ではなく**書式**指定子です。しかし、型や変数の名前としては有効ではありません。それにかかわらず、これは質問に答えません。 –

関連する問題