Всем привет.
Весна, лыжи встали. Как мне провернуть эту махинацию? Человеческий геттер не подходит.
#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;
}
Здравствуйте, Аноним, Вы писали:
А>Всем привет.
А>Весна, лыжи встали. Как мне провернуть эту махинацию? Человеческий геттер не подходит.
недавно разжевывали тут
http://rsdn.ru/forum/cpp/3783433.flat.aspxАвтор: sidorov18
Дата: 22.04.10
Здравствуйте, Аноним, Вы писали:
А>Всем привет.
А>Весна, лыжи встали. Как мне провернуть эту махинацию? Человеческий геттер не подходит.
Отказаться от 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.