首页 > 解决方案 > 使用智能指针将“this”传递给类的最佳实践

问题描述

我有一个特定格式的文件,它代表一个文件系统。此外,我有一个名为“FS”的类,它解析上述文件,并构建一个文件数组。它看起来像这样:

class File
{
    friend FS;

private:
    FS * fs;

public:
    File(FS *fs) : fs(fs) {
        ...
    }
    
    void readFile() {
        fs->readSector(...);
    }
}

class FS
{
    private:
        std::vector<File> files;
    
        int readSector(...) {
            ...
        }
    
        void parse() {
            for (...) {
                readSector(...);
            }
        }
        
    public:
        File getFileByName(...) {
            return File(this);
        }
}
  1. 将“this”传递给“File”类的最佳方法是什么?
  2. 我应该使用智能指针吗?如果是这样,在这种情况下我应该如何使用它们?如果我确实使用了它们,如果我使用“new”运算符创建一个“FS”实例,但在内部我会使用“this”的智能指针,会发生什么?
  3. 在这里使用“朋友”吗?

标签: c++design-patternssmart-pointers

解决方案


推荐阅读