user conversion
От: Аноним  
Дата: 24.04.10 04:28
Оценка:
Всем привет.
Весна, лыжи встали. Как мне провернуть эту махинацию? Человеческий геттер не подходит.

#include <memory>

class Test
{
public:
typedef std::auto_ptr<char> BinaryData; 
operator BinaryData(){return BinaryData(0);}
};

int main()
{
Test test;
Test::BinaryData data = test;
return 0;
}
Re: user conversion
От: uzhas Ниоткуда  
Дата: 24.04.10 08:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет.

А>Весна, лыжи встали. Как мне провернуть эту махинацию? Человеческий геттер не подходит.
недавно разжевывали тут http://rsdn.ru/forum/cpp/3783433.flat.aspx
Автор: sidorov18
Дата: 22.04.10
Re: user conversion
От: Bell Россия  
Дата: 24.04.10 08:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет.

А>Весна, лыжи встали. Как мне провернуть эту махинацию? Человеческий геттер не подходит.

Отказаться от auto_ptr в пользу вектора, например:

#include <memory>
#include <vector>

class Test
{
public:
typedef std::vector<char> BinaryData; 
operator BinaryData(){return BinaryData();}
};

int main()
{
Test test;
Test::BinaryData data = test;
return 0;
}


если, конечно, устраивает такая семантика.

Исходный вариант не работает потому, что конструктор копирования std::auto_ptr требует lvalue, а результат оператора operator BinaryData — это rvalue.
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.