Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] #include string: No such file or directory

Ostatnio zmodyfikowano 2014-06-30 15:23
Autor Wiadomość
nairu
Temat założony przez niniejszego użytkownika
[c++] #include string: No such file or directory
» 2014-06-30 13:41:24
Witam,

W projekcie (aplikacja winapi) mam pliki main.cpp, kalk.cpp, kalk.h, sett.rc.

Potrzebuję, aby klasy korzystały ze zmiennych typu string. Includuję do wszystkich plików <string>, ale kompilator (Code::Blocks 12.11) wypluwa mi błąd jak w tytule i wskazuje na plik kalk.h

Co z tym mogę zrobić?

początek pliku kalk.h
C/C++
#include <windows.h>
#include <string>

using namespace std;

Później idą definicje makr - działają. Program działał normalnie do momentu, w którym zrobiłem klasy używające stringów i includowałem <string>

Będę wdzięczny za pomoc.
P-112973
pekfos
» 2014-06-30 14:02:50
Dołączasz kalk.h do pliku .rc?

C/C++
using namespace std;
Tego nie powinno być w nagłówku.
P-112975
nairu
Temat założony przez niniejszego użytkownika
» 2014-06-30 14:14:20
tak, do każdego pliku jest dołączony kalk.h

Dlaczego w pliku nagłówkowym nie powinienem używać namespace std?

Tak, czy inaczej, gdy usunę przestrzeń nazw i pododaję std:: przed wszystkimi stringami, to wciąż nie działa i nie znajduje biblioteki.

Każdy z pozostałych plików zaczyna się następująco:

C/C++
#include <windows.h>
#include "kalk.h"

using namespace std;
P-112978
pekfos
» 2014-06-30 14:54:01
Że nie powinno się używać using namespace, to tak btw. Problem jest w tym, że większości rzeczy z pliku kalk.h nie możesz dołączyć do pliku zasobów, więc musisz je warunkowo wyłączyć
C/C++
#ifndef RC_INVOKED

#include <string>
//using namespace std;

//itd..

#endif
P-112979
nairu
Temat założony przez niniejszego użytkownika
» 2014-06-30 15:09:31
OK, to co zrobiłem z plikiem nagłówkowym:

C/C++
#include <windows.h>

#ifndef RC_INVOKED
#include <string>
#endif

//dalej sa definicje makr, "spis tresci" klas, metod, itd

Wywaliłem using namespace - dzięki za podpowiedź, ale wciąż będę wdzięczny za info dlaczego. Jeśli nie tutaj, to jakiś priv ;)

Działa póki co, czyt nie krzyczy, że nie może znaleźć biblioteki a zmienne typu string nie powodują błędów.

Dziękuję pięknie.
P-112981
pekfos
» 2014-06-30 15:23:16
Wywaliłem using namespace - dzięki za podpowiedź, ale wciąż będę wdzięczny za info dlaczego.
Zła praktyka.

Jeśli nie tutaj, to jakiś priv ;)
..podobnie jak pytanie o informacje na 'priv'.. Problem rozwiązany, temat zamkniety.
P-112984
« 1 »
  Strona 1 z 1