Ошибка:
g++ -Wall -Wextra -ansi -pedantic Testr.cc classE.cc classC.cc
classE.cc:46:14: error: expected unqualified-id before '&'token
classC.cc:46:14: error: expected unqualified-id before '&'token
Строка, на которую ссылается компилятор:
classE classE::&operator%(classB &rhs){
Компилятор говорит о '&' в 'classE :: & operator%'выражение;Я бы сразу же удалил амперсанд, но назначение (да, произвольные рекомендации по выполнению домашних заданий) требует этого.Я даже не уверен, что должен делать амперсанд.Подобные методы перегрузки операторов используют ту же схему без проблем, и я пришел с пустыми руками через google и учебники.
Указание производного класса (classB.h является чисто виртуальным) в аргументах не ясноэти ошибки, либо.
Поскольку другие операторы, аналогичные определенным, работают без проблем, я считаю, что проблема заключается в реализации.Основная идея состоит в том, чтобы взять два объекта, производных от classB (classC или classE), и чередовать строковую переменную, которую каждый объект содержит с другим, возвращая объект типа lhs, содержащий переплетенную строку.Реализация classE по сути такая же, как и реализация classC:
classC classC::&operator%(classB &rhs){ //Interleave two classB-derived objects, return object of lhs-type
string temp = rhs.str(), temp2 = restore(), result = "";
int a = temp.size(), b = temp2.size(), max;
if (temp2.size() > temp.size()){
max = temp2;
}
else{
max = temp;
}
for (int i = 0; i < max; i++){
if (i < a){
result += temp2[i];
}
if (i < b){
result += temp[i];
}
}
return classC(result);
}
Извините, я новичок здесь;Я понятия не имею, как добавить номера строк в блоки кода = - \
Спасибо за чтение и рассмотрение моей проблемы.= -)
РЕДАКТИРОВАТЬ: я боялся, что это будет смущающей глупой ошибкой;изменение строки на classE & classE :: operator% (classB & rhs) {открыло шлюзы для множества новых ошибок.Хех, как раз тогда, когда я думал, что знакомлюсь с C ++.Большое спасибо, ребята.Я надеюсь, что все мои будущие вопросы так же просты.