Problem z ustawieniem zmiennej.

0

Witam, piszę program, który musi mi wyświetlić listę katalogów. Działa dobrze jeśli w argumencie funkcji opendir wpiszę string/char ale jeśli zrobię tak jak poniżej, to już wywala błedami. Help.

//file_loader.h
using namespace std;
class File_Loader
{
    public:
    char File_name;
    char File_directory;
    int File_size;

    void Set_directory(char File_directory)
    {
        this->File_directory = File_directory;
    }

    void Display_Books()
    {
        DIR * dir;
        struct dirent *Folder;

        dir = opendir(this->File_directory);
        if(dir != NULL)
        {
            while(Folder = readdir(dir))
                cout<<Folder->d_name<<endl;
            closedir(dir);
        }
        else
        {
            cout<<"Nie mozna costam."<<endl;
        }

    }
};

//main.cpp
#include <iostream>
#include <string.h>
#include <math.h>
#include <dirent.h>
#include "file_loader.h"

using namespace std;

int main()
{
    File_Loader * Loader = new File_Loader;
    Loader->Set_directory("./");
    delete(Loader);
    return 0;
}

A błąd to

[email protected]:~/Studia/C++/Projekt 1$ g++ main.cpp -o main
In file included from main.cpp:5:0:
file_loader.h: In member function ‘void File_Loader::Display_Books()’:
file_loader.h:19:37: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
/usr/include/dirent.h:135:13: error:   initializing argument 1 of ‘DIR* opendir(const char*)’ [-fpermissive]
main.cpp: In function ‘int main()’:
main.cpp:12:28: error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
file_loader.h:9:7: error:   initializing argument 1 of ‘void File_Loader::Set_directory(char)’ [-fpermissive]

Pozdrawiam

1

Znak w C obejmuje się ' ' a nie " ".

Po drugie:

void Set_directory(char File_directory)

To funkcja przyjmująca jeden znak. Raczej nie tego chciałeś?

0

Ale nie mogę jej przekazać nic innego bo opendir wymaga const char Co z tego że zadziała dla '/' skoro ja chcę np. "/system/folder/jakisinny/"*. Chcę przekazać ścieżkę do folderu który ma otworzyć.

1
char
  • jeden znak
    char*
  • łańcuch znaków (gdybyś pisał w C to by było ok...)
    string
  • łańcuch znaków, na C++ sposób.
0

Ok, już mam, bo wtedy zrobiłem

const * char File_DIrectory 

zamiast

const char * File_DIrectory 

Dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0