2012-04-19 24 views
3

gcc 4.4をgCC 4.7にアップデートしていますが、これは4.7を使用するために行います。unique_ptrにはメンバー関数がありません

私の問題はunique_ptrを使用している場合です。私はこのコード

#include <iostream> 
#include <memory> 

#include <CL/cl.h> 

using namespace std; 

/* 
* 
*/ 
int main(int argc, char** argv) { 

    std::unique_ptr<cl_platform_id[]>yt; 
    yt = std::unique_ptr<icl_platform_id[]> (new cl_platform_id [3]); 


    /* yt.get()[0] = ...... */ this is error no member found 

    return 0; 
} 

を書いたが、私はuique_ptr::get()ようytメンバーなど使用したいと私が得る唯一の機能はoperator*なので、問題は何ですか?

編集:あなたのIDEのメンバーの提案に問題があるでしょう

std::unique_ptr<cl_platform_id[]> yt (new cl_platform_id[3]); 
yt[0].some_member(); 
+0

エラーメッセージは何ですか? – Nick

+0

私はgcc 4.7を使っていて、getに問題はありません。 CLを使わずに問題を再現する小さなサンプルを提供できますか? – juanchopanza

+0

エラーメッセージは表示されませんが、operator *メンバー以外のメンバーのメンバーは見つかりません。 – user1344201

答えて

2

あなたが何かをしたい:

がここに私の問題です。 std::unique_ptrは、デフォルトのテンプレートと配列の部分的な特殊化の両方で、メンバpointer get() const noexcept;を必ず持っています。

自分でget()と入力した場合、コンパイラは満足しているはずです。残念ながら、私はそのIDEを使用していないので、私はあなたのオートコンプリートを修正することはできません。

get()に電話する必要があるかどうかは別の質問です。 yt[0]などの配列要素にアクセスすることができます。get()は、まれに実際に生ポインタが必要な場合にのみ使用されます。

+0

私の問題はinitのメンバーではありませんが、私の問題は、演算子以外のメンバーがありません* – user1344201

+0

ちょうどあなたのIDEが正しく解析する方法を知らないことがスクリーンショットを見つけましたか?メンバーがそこにいると仮定してコンパイルするとどうなりますか? – Benj

+0

はい、それをコンパイルしてください!私は鉱山の問題はideとあると思うよ – user1344201

関連する問題