проблема с переопределением класса и общей иерархией между классами

#include <iostream>
#include <string>
#include <filesystem>
#include <memory>
#include <ctime>
#include <vector>


void search(const std::string& Path)
{
    for (auto file : std::filesystem::directory_iterator(Path))
    {

        if (std::filesystem::is_directory(file))
        {
            continue;

        }
        std::cout << file.path().string()<<std::endl;

    }

}
class folder {
public:
    void Redact();
    void Delete();

};

class User
{};

class PrivateUser :User {   
    
    std::shared_ptr<folder> F;
public: 
    void Privateredact()
    {
        F->Redact();
    }
    void PrivateDelete();

};
void Scan() {}
class folder 
{
    std::string Name;
    std::string Path;
    PrivateUser Privating;
public:
    void Redact();
    void Delete();

};

ошибка:folder: переопределение типа "class"

int main(){} как мне сделать так, что бы в классе folder было поле типа PrivateUser, но при этом в классе PrivateUser можно было использовать методы класса Folder(идея в том, что бы у папки был свой "User"/владелец, и только он может изменять, удалять и перемещать папку)


Ответы (1 шт):

Автор решения: Harry

Так устроит?

class folder;

class PrivateUser :User {   
    
    std::shared_ptr<folder> F;
public: 
    void Privateredact();
    void PrivateDelete();

};


void Scan() {}

class folder 
{
    std::string Name;
    std::string Path;
    PrivateUser Privating;
public:
    void Redact();
    void Delete();

};

inline void PrivateUser::Privateredact()
{
    F->Redact();
}
→ Ссылка