我正在将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
答案 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()
仅适用于您实际需要原始指针的极少数情况。