Проблема работы с объектами через unique_ptr (const-квалификаторы)
От: _hum_ Беларусь  
Дата: 16.04.16 11:21
Оценка: :)
Опять грабли на пустом месте.
class CA
{
    std::vector<std::unique_ptr<int> > m_V;
    
public:
    int get_foo(const std::unique_ptr<const int>& v)const;
    int set_foo(const std::unique_ptr<int>& v, const int val); 

    void foo()
    {
        for(auto& v: m_V)
        {
            const int val = 2 * get_foo(v);// error: невозможно преобразовать "std::unique_ptr<int, ...>&" в "std::unique_ptr<const int, ...>&"
            set_foo(v, val);
        };
    }
        
};


В случае обычных указателей никаких таких проблем не было бы

class CA
{
    std::vector<int*> m_V;
    
public:
    int get_foo(const int* v)const;
    int set_foo(int* v, const int val); 

    void foo()
    {
        for(auto& v: m_V)
        {
            const int val = 2 * get_foo(v);
            set_foo(v, val);
        };
    }
        
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.