C++ unique_ptr没有成员函数
我正在将我的GCC4.4更新为GCC4.7,我将这样做以使用4.7 我的问题是当我使用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[]>
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都能很好地完成它。