簡體   English   中英

如何在C ++的類中創建嵌套組織?

[英]How do you create nested organization in a class for c++?

我對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個對象,然后隱含地引用以下命令:

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

...等

這可能嗎? 如果是這樣,怎么辦?

#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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM