Как создать список объектов/структур в C++?

Имеется такая ситуация:

 ~/workdir # ls
srwxrwxrwx mysocket.sock
brwxrwxrwx my_null
drwxrwxrwx mydir
-rwxrwxrwx myfile.bin
prwxrwxrwx mypipe
lrwxrwxrwx mylink -> myfile.bin
 ~/workdir # cat ../main.cpp
#include <filesystem>
#include <string>
using namespace std;

struct file {
    string name;
    unsigned int type;
}

int main() {
    for (auto a : std::filesystem::directory_iterator("workdir")) {
        string fpath = (a.path()).c_str();
        string namefile = fpath.replace(fpath.find("workdir/"), 8, "");
        static int filetype;
        bool isfile = std::filesystem::is_regular_file(fpath);
        if (isfile) {
            int filetype = 1;
        } else {
            bool isdir = std::filesystem::is_directory(fpath);
            if (isdir) {
                int filetype = 2;
            } else {
                bool issock = std::filesystem::is_socket(fpath);
                if (issock) {
                    int filetype = 3;
                } else {
                    // Далее идёт проверка на иные типы файлов...
                }
            }
            // И тут надо создать структуры.
        }
    }
    return 0;
}

И вот проблема. Надо бы создать множество объектов. Но у меня цикл, а я не знаю, как создать структуру с именем переменной. Да, пусть структуры называются struct1, struct2, и т д - мне это по большому счёту неважно. Главное - создать множество структур. Список этих структур мне создать не проблема - можно сделать список имён структур в векторе, и затем уже к ним обращаться... Причём мне ещё нужно будет использовать информацию со структур. Ну т е:

    .....
    ofstream list_stream;
    list_stream.open("output.txt", ios::out);
    if (struct4.type==1) {
        list_stream << struct4.name << " is regular file" << endl;
    }
    .....

Как это сделать?


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