class BaseClass {
public:
BaseClass(const byte *buff, long size) {
// Some Computation
}
};
class DerivedClass: public BaseClass {
public:
std::vector<byte> filebuff;
long buff_size;
DerivedClass(): BaseClass(/*How should I send stuff here?*/)
{
}
/*return type??*/ cal_func(){
// Some computation involving file descriptors.
// Store result in filebuff. Store size of filebuff in buff_size.
return /*what??*/;
}
}
Я могу думать только о следующем решении:C++: Как вызвать конструктор базового класса с несколькими аргументами?
DerivedClass(): BaseClass(&filebuff[0], cal_func)
В приведенном выше случае, я сделаю функцию FUNC(), чтобы вернуть длину filebuff. Я полагаюсь на то, что filebuff - это только адрес, и, следовательно, не имеет значения, поставит ли компилятор вычисленное значение func в стек сначала или первый arg, filebuff.
Пожалуйста, скажите мне, подходит ли это для этого. Если первым аргументом не был адрес и какое-то другое вычисленное значение, которое потребовало бы вычисления, выполненного в функции func, как было бы лучше всего это сделать?
Нет, это неправильно: вы делаете '& filebuff [0]' перед 'filebuff'. – ildjarn
Не могли бы вы объяснить, что было бы оптимальным способом передать адрес? –
Редизайн вашего кода - рассмотрите возможность использования композиции, а не наследования. В коде нет ничего, что демонстрирует необходимость в производном классе. – ildjarn