Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ unique_ptr没有成员函数_C++_C++11_Unique Ptr - Fatal编程技术网

C++ unique_ptr没有成员函数

C++ unique_ptr没有成员函数,c++,c++11,unique-ptr,C++,C++11,Unique Ptr,我正在将我的GCC4.4更新为GCC4.7,我将这样做以使用4.7 我的问题是当我使用unique\u ptr时。我写了这段代码 #include <iostream> #include <memory> #include <CL/cl.h> using namespace std; /* * */ int main(int argc, char** argv) { std::unique_ptr<cl_platform_id[]>

我正在将我的GCC4.4更新为GCC4.7,我将这样做以使用4.7

我的问题是当我使用
unique\u 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;
}
#包括
#包括
#包括
使用名称空间std;
/*
* 
*/
int main(int argc,字符**argv){
std::独特的ptryt;
yt=std::unique_ptr(新的cl_平台_id[3]);
/*yt.get()[0]=…*/这是一个错误,未找到任何成员
返回0;
}
但是我想使用
yt
成员,比如
uique\u ptr::get()
,我得到的唯一函数是
operator*
,那么问题出在哪里呢

编辑:

我的问题是:

您想要的是:

std::unique_ptr<cl_platform_id[]> yt ( new cl_platform_id[3] );
yt[0].some_member();
std::unique_ptr yt(新cl_平台_id[3]);
yt[0]。某些_成员();

这将是IDE成员建议的一个问题
std::unique_ptr
当然有一个成员
pointer get()const noexcept,在默认模板和阵列的部分专业化中

如果您自己键入
get()
,那么编译器应该会很高兴。不幸的是,我从未使用过那个IDE,所以我无法帮助您修复它的自动补全器


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

我使用gcc 4.7,get没有问题。你能提供一个复制问题的小样本,而不使用CL东西吗?@vnm这不会是内存泄漏,除非CL_platform_id有一个需要调用的析构函数,该析构函数也会删除内存。@Benj不管它是不是POD,行为是未定义的,任何事情都可能发生,包括一个内存泄漏。@Benj-读一下:无论如何,这都是不相关的,因为unqiue_ptr有一个处理数组的部分专门化,并调用delete[]。我的问题不在初始化成员,但我的问题是,我没有成员,只有operator*刚刚看到了屏幕截图,您确定只是您的IDE不知道如何正确解析它吗?如果您编译时假设成员在那里会发生什么。是的,它会编译它!我认为我的问题是IDE,谢谢,记住C++不是java(它有反射,因此可以告诉IDE如何解析它),要正确解析模板是很困难的,不是所有IDE都能很好地完成它。