2012-04-19 3 views
3

Я обновляю свой gcc 4.4 до gCC 4.7, я сделаю это, чтобы использовать 4.7.unique_ptr не имеет функции-члена

Моя проблема в том, что я использую 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

Какое сообщение об ошибке? – Nick

+0

Я использую gcc 4.7 и не имею проблем с get. Не могли бы вы предоставить небольшой образец, который воспроизводит проблему, без содержимого CL? – juanchopanza

+0

У меня нет сообщения об ошибке, но я не могу найти член на любом другом члене, кроме члена оператора *. – user1344201

ответ

2

Это будет проблема с предложениями членов вашей среды IDE. std::unique_ptr, безусловно, имеет член pointer get() const noexcept; как в шаблоне по умолчанию, так и в частичной специализации для массивов.

Если вы наберете get() самостоятельно, тогда компилятор должен быть счастлив. К сожалению, я никогда не использовал эту IDE, поэтому я не могу помочь вам исправить ее автозаполнение.

Должен ли вы звонить get() - это еще один вопрос; вы можете получить доступ к элементам массива как yt[0] и т. д. get() предназначен только для тех редких случаев, когда вам действительно нужен необработанный указатель.

2

Вы хотите что-то вроде:

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

моя проблема не в init, но моя проблема в том, что у меня нет члена, кроме оператора * – user1344201

+0

Просто заметили скриншот, вы уверены, что это просто, что ваша среда разработки не знает, как правильно ее разобрать? Что произойдет, если вы скомпилируете, считая, что член существует. – Benj

+0

да, это скомпилировать его! Я думаю, что моя проблема связана с идеей – user1344201

 Смежные вопросы

  • Нет связанных вопросов^_^