Есть базовый класс А и производный от него B.
В производном классе перегружен operator -, который принимает и возвращает значение типа класса B.
Сам код очень большой, по этому приведу часть, относящуюся к ошибке:
String.h
#ifndef STRING_H
#define STRING_H
#include <iostream>
#include <cstring>
using namespace std;
class String
{
protected:
char *str;
unsigned int size;
public:
virtual StringIdentifier operator-(const StringIdentifier &STR){};
//ошибка в этой строке
"include/String.h|74|error: ‘StringIdentifier’ does not name a type"
virtual String operator-(const char *STR){};
virtual String Invert(){};
virtual String TransferCase(){};
virtual char* FirstSymbolOccurrence(const char c){}
};
#endif // STRING_H
StringIdentifier.h
#ifndef STRINGIDENTIFIER_H
#define STRINGIDENTIFIER_H
#include <iostream>
#include <cstring>
using namespace std;
class StringIdentifier : public String
{
public:
/* Перегрузка операции '-' при вычитании из объекта класса строки */
String operator-(const char *STR)
{
cout<<"ПЕРЕГРУЗКА ОПЕРАЦИИ '-' [1] [class StringIdentifier]"<<endl;
int i, j, k;
for(i=0; str[i]!='\0'; i++)
{
for(j=0; STR[j]!='\0'; j++)
{
if(str[i]==STR[j])
{
for(k=i+1; str[k]!='\0'; k++)
str[k-1]=str[k];
size--;
str[size]='\0';
i--;
}
}
}
return *this;
}
/* Перегрузка операции '-' при вычитании из объекта класса другого объекта данного класса */
StringIdentifier operator-(const StringIdentifier &STR)
{
cout<<"ПЕРЕГРУЗКА ОПЕРАЦИИ '-' [class StringIdentifier] [2] "<<endl;
int i, j, k;
for(i=0; str[i]!='\0'; i++)
{
for(j=0; STR.str[j]!='\0'; j++)
{
if(str[i]==STR.str[j])
{
for(k=i+1; str[k]!='\0'; k++)
str[k-1]=str[k];
size--;
str[size]='\0';
i--;
}
}
}
return *this;
}
/* Метод перевода букв из верхнего регистра в нижний */
String TransferCase()
{
cout<<"МЕТОД: ПЕРЕВОДА БУКВ ИЗ ВЕРХНЕГО РЕГИСТРА В НИЖНИЙ [class StringIdentifier]"<<endl;
int i;
for(i=0; str[i]!='\0'; i++)
{
if((str[i]>64 && str[i]<91))
str[i]+=32;
}
return *this;
}
/* Метод поиска первого вхождения символа в строку. Возвращает указатель на ту часть строки, где впервые встретился символ */
char* FirstSymbolOccurrence(const char c)
{
cout<<"МЕТОД: ПОИСК ПЕРВОГО ВХОЖДЕНИЯ СИВОЛА В СТРОКУ [class StringIdentifier]"<<endl;
return strchr(str,c);
}
};
#endif // STRINGIDENTIFIER_H