[SOLVED]Qt4 - katalog domowy oraz stałe

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
kabanek
Zakręcona Traszka
Zakręcona Traszka
Posty: 592
Rejestracja: 23 cze 2009, 20:34
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Środowisko graficzne: Xfce
Architektura: x86_64
Kontakt:

[SOLVED]Qt4 - katalog domowy oraz stałe

Post autor: kabanek »

mam następujący problem: chciałem w pliku nagłówkowym ustalił w stałych katalogi (domowy użytkownika oraz ścieżkę do miejsca gdzie pliki mojego programu są trzymane) i pojawia się problem... Oto mój kod:

Kod: Zaznacz cały

#ifndef HEADER_H
#define HEADER_H

#include <QString>

#ifdef linux

//returns linux user home dir
char * linuxUserDir()
{
        FILE *fp;
        char tmp[130];

        fp = popen("echo $HOME", "r");
        fgets( tmp, sizeof tmp, fp);

        pclose(fp);

        return tmp;
}

//set program consts
const QString appDir = "/usr/share/APP/";
const QString appHome = (QString)linuxUserDir() + ".APP/";

#endif //#ifdef linux

#endif // HEADER_H
no i kod działa, ale gdy chcę dodać ten plik do 2 różnych plików .cpp to wywala mi błędy o powtórzeniu deklaracji funkcji linuxUserDir()

Kod: Zaznacz cały

MainWindow.o: In function `linuxUserDir()':
/home/bartek/Qt4/APP/./header.h:9: multiple definition of `linuxUserDir()'
main.o:/home/bartek/Qt4/APP/./header.h:9: first defined here
moc_MainWindow.o: In function `linuxUserDir()':
/home/bartek/Qt4/APP/./header.h:9: multiple definition of `linuxUserDir()'
main.o:/home/bartek/Qt4/APP/./header.h:9: first defined here
collect2: ld returned 1 exit status
make: *** [output/APP] Błąd 1
Awatar użytkownika
Struchu
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 116
Rejestracja: 23 mar 2008, 19:58
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: Qt4 - katalog domowy oraz stałe

Post autor: Struchu »

Rozdziel ten plik na dwa, np. na userdir.h i userdir.cpp. W pliku .cpp umieść ciało funkcji linuxUserDir(), a w pliku .h pozostaw tylko deklarację. Potem do wszystkich innych plików źródłowych gdzie chcesz wykorzystać funkcję linuxUserDir() załączasz tylko plik userdir.h. Tak na przyszłość: w plikach nagłówkowych nie powinno się umieszczać definicji funkcji.
Ma zielone, kocie oczy...
Awatar użytkownika
kabanek
Zakręcona Traszka
Zakręcona Traszka
Posty: 592
Rejestracja: 23 cze 2009, 20:34
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Środowisko graficzne: Xfce
Architektura: x86_64
Kontakt:

Odp: Qt4 - katalog domowy oraz stałe

Post autor: kabanek »

pomogło, dzięki :)
adrian5632
Przyjaciel
Przyjaciel
Posty: 259
Rejestracja: 17 gru 2006, 16:07
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [SOLVED]Qt4 - katalog domowy oraz stałe

Post autor: adrian5632 »

Nie lepiej użyć statycznej metody QDir::homePath()?
[IMG]http://www.ubudsl.com/media/UbuDSL.png[/IMG]
Masz problem z UbuDSL? Nie zapomnij wygenerować i załączyć loga do postu!
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 9 gości