如何在c ++的类中创建嵌套组织?

时间:2017-01-21 10:48:33

标签: c++ class

我对c ++很新,但我已经达到了我想要构建自己的库以供其他程序使用的程度。我遇到了一个组织问题,可以通过命名空间和传递结构来解决,但我想在一个类中组织我的函数。我搜索过,但没有找到很多明确的答案。我还想避免使用“朋友类x”,因为我已经编写了许多函数并计划编写更多函数,如果我将它保存在同一个对象中,则可以避免所有引用。

class FileOps
private:
<data to be manipulated>
public:
    // Target Management:
    void setDir(std::string input);
    void setFile(std::string target, std::string extension);
    // File Management:
    void listFiles(std::string manualExtension);
    void setFileList();
    bool fileSeek();
    void deleteFile();
    std::string chooseFile(std::string manualExtension);
    // File Content:
    void displayFileContents();
    std::string randomLine();
    void listManagement();
    // Database Management:
    void typeList();
    void smartBuffer();
    void dataBuffer(std::string dataType);
    searchTable searchQuery;
    std::string searchSimple(std::string searchType);
    void searchDump();
    void globalDataSearch();
    void globalTermSearch();
    void globalDataDump();
    void dataDump(std::string dataTypeSelection);

我可以通过将私有数据转换为结构,然后通过参数传递结构来轻松解决此问题,但我想为每个类创建1个对象,然后在实现中,引用命令如下: / p>

Fileops x;
x.TargetManage::setDir("thisdirectory");
x.FileManage::listFiles();

......等等。

这可能吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

#include <iostream>
class FileOps
public:
FileOps() {TargetManage.f = this;}
private:
friend class s1;
int x = 1;
public:
    class s1 {
    public:
        FileOps * f;
        void setDir(std::string input) {std::cout << ++f->x;}
        void setFile(std::string target, std::string extension);
    } TargetManage;
    class {
    public:
        void listFiles(std::string manualExtension);
        void setFileList();
    } FileManage;
...

Fileops x;
x.TargetManage.setDir("thisdirectory");
x.FileManage.listFiles();