Pomijając sedno dyskusji o możliwości przemyślenia czy kod który tworzysz ma sens, dla użycia wskaźników i referencji, możesz stosować zapowiedź typu.
Tak więc kod..
class File;
class FileMaster{
public:
void AddFile(const File &F) const;
void DeleteFile(const short pos, const File &F);
std::string GetFName();
std::string GetFPath();
short GetNewId();
private:
std::vector<File> Files;
};
class File : public FileMaster{
public:
File(const std::string &Path, const short ID, const std::string &StringName);
~File();
File& operator=(const File &r);
bool Copy(const std::string &path) const;
bool Move(const std::string &path);
bool Delete();
bool Show();
private:
std::string FilePath;
std::string FileName;
short FileID;
std::string FStringName;
};
Swobodnie się skompiluje. Tylko przemyśl czy z całą pewnością ten efekt współpracy obiektów chcesz osiągnąć.