3

gcc4.4をgCC4.7に更新しています。これは、4.7を使用するために行います。

私の問題は、を使用するときです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;
}

ytでも、のようなメンバーを使いたいのですが、uique_ptr::get()取得できる関数は、だけなoperator*ので、何が問題なのでしょうか?

編集:

これが私の問題です: http: //image-load.biz/?di = 6FBY

4

2 に答える 2

2

あなたは次のようなものが欲しいです:

std::unique_ptr<cl_platform_id[]> yt ( new cl_platform_id[3] );
yt[0].some_member();
于 2012-04-19T14:27:24.590 に答える
2

これは、IDEのメンバーの提案に問題があります。std::unique_ptr確かpointer get() const noexcept;に、デフォルトのテンプレートと配列の部分的な特殊化の両方にメンバーがあります。

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

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

于 2012-04-19T15:18:07.413 に答える