3

我正在将我的 gcc 4.4 更新到 gcc 4.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

这将是您的 IDE 成员建议的问题。std::unique_ptr当然pointer get() const noexcept;在默认模板和数组的部分特化中都有一个 member 。

如果您get()自己键入,那么编译器应该很高兴。不幸的是,我从来没有使用过那个 IDE,所以我不能帮你修复它的自动完成器。

你是否应该打电话get()是另一个问题。您可以访问数组元素yt[0]等。get()仅适用于您实际需要原始指针的极少数情况。

于 2012-04-19T15:18:07.413 回答
2

你想要这样的东西:

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