ошибки:C++: Оператор ошибка перегрузки: ожидаются неквалифицированный-идентификатор перед «&» лексем
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 является чисто виртуальным) в аргументах также не устраняет эти ошибки.
Поскольку другие аналогично определенные операторы работают без проблем, я считаю, что проблема заключается в реализации. Основная идея состоит в том, чтобы взять два объекта класса B (classC или classE) и перемежать строковую переменную, каждый из которых содержит один объект, возвращая объект типа lhs, содержащий переплетенную строку. Реализация класса действительно эффективно аналогична реализации класса C:
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);
}
Извините, я здесь совершенно новый; Я понятия не имею, как добавить номера строк в кодовые блоки = - \
Спасибо за чтение и рассмотрение моей проблемы. = -)
EDIT: Я боялся, что это будет смущающе глупая ошибка; меняя линию на классE & классE :: оператор% (класс B & гг.) { открыл шлюзы для тонны новых ошибок. Хех, когда я подумал, что я нахожусь на C++. Спасибо, кучка, ребята. Я надеюсь, что все мои будущие вопросы будут такими же простыми.