Здравствуйте!
Есть два класса DataType1 и DataType2, каждый из которых инкапсулирует указатель памяти на данные своего типа. У класса DataType1 есть, например, функция:
void DataType1::ConvertRangeToType2(DataType2& Destination, int nDestPos, int nSourcePos, int nLength) {...}
Проблема в том, что код, вызывающий эту функцию класса практически не читабельный:
DataType1 ds(100); //100 элементов типа 1
DataType2 dd(1000); //1000 элементов типа 2
//Догадаться, какой аргумент за что отвечает – невозможно без просмотра прототипа
Ds.ConvertRangeToType2(dd, 200, 0, 100);
Как следствие – высока вероятность допустить ошибку. Оформить все, чтобы можно было писать в стиле C# так:
ds.GetRange(0, 100).ConvertToType2(dd.GetRange(200, 100))
не выйдет, так как не получиться вернуть ссылки, созданные в вызываемых функциях. Если добавить манипулятор и перейти к указателям – их надо сохранять, чтобы затем удалить, либо использовать auto_ptr. И то и другое – громоздко. Может быть, кто-нибудь подскажет хороший пример интерфейса операций (манипуляции) с памятью?! Или, опираясь на свой опыт подскажет, как бы надо поступить?
Спасибо.