unique_ptr没有成员函数

时间:2012-04-19 14:17:14

标签: c++ c++11 unique-ptr

我正在将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

2 个答案:

答案 0 :(得分:2)

你想要这样的东西:

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

答案 1 :(得分:2)

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

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

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