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

mateusz@mateusz-pc:~/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