• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed C++ bez IDE. Problem z plikami.h

0 głosów
523 wizyt
pytanie zadane 2 kwietnia 2020 w C i C++ przez qwx6 Początkujący (300 p.)
zamknięte 5 kwietnia 2020 przez qwx6

Witam

Od pewnego czasu programuję w C++ bez środowiska programistycznego. Wszystko ładnie działa, dopóki nie przejdę na obiektowe programowanie i nie zacznę tworzyć plików .h i .cpp.

Oto są moje pliki, które kompiluje:

main.cpp

#include <iostream>
#include "test.h"
using namespace std;

int main()
{
	Test t1;
	t1.funkcja();
return 0;
}

 

test.h

#include <iostream>
using namespace std;

class Test
{
public:
	void funkcja();
};

 

test.cpp

#include <iostream>
#include "test.h"
using namespace std;

void Test::funkcja()
{
	cout << "Program dziala poprawnie" << endl;
}

W CodeBlocks wszystko ładnie działa, lecz u mnie wyświetla się błąd, że Test::funkcja() nie jest zdefiniowane. Gdy w pliku main.cpp zamienię #include "pytanie.h" na #include "pytanie.cpp" to wszystko ładnie działa, ale wiem, że nie powinno się tak includować. Proszę o jakieś wskazówki.

 

Kompilator(plik wsadowy.bat)

https://pastebin.com/9YG0t1sS

komentarz zamknięcia: Problem rozwiązany
komentarz 2 kwietnia 2020 przez adrian17 Mentor (355,240 p.)

plik wsadowy.bat

Sugeruję poczytać o make'u, cmake'u lub innych standardowych build systemach - bo na razie to wynajdujesz własny makefile ;)

komentarz 2 kwietnia 2020 przez tangarr Mędrzec (155,120 p.)
Podpinam się do powyższej porady.
CMake jest zarąbistym systemem budowania. Na początku może przerażać, ale później nie będziesz mógł sobie wyobrazić życia bez niego.

Szczerze polecam.
komentarz 2 kwietnia 2020 przez adrian17 Mentor (355,240 p.)
Well... cmake jest jak demokracja - jest najgorszy, nie licząc całej reszty ;)

3 odpowiedzi

+1 głos
odpowiedź 2 kwietnia 2020 przez j23 Mędrzec (195,220 p.)
wybrane 5 kwietnia 2020 przez qwx6
 
Najlepsza
c++ %nameMainFile%.cpp test.cpp -o Debug\%nameProgramDebug%.exe

 

Skoro test.h załącza <iostream>, to nie ma potrzeby, by test.cpp robił to samo.

I tak jak koledzy wyżej napisali, użyj CMake'a.

 

komentarz 2 kwietnia 2020 przez Programeł Gaduła (3,500 p.)
Najlepiej dołączać biblioteki w plikach *.cpp.
komentarz 2 kwietnia 2020 przez j23 Mędrzec (195,220 p.)
Tak, ale nie zawsze się da.
+2 głosów
odpowiedź 2 kwietnia 2020 przez tangarr Mędrzec (155,120 p.)
Musisz skompilować wszystkie pliki cpp projektu. Sam main.cpp nie wystarczy.
0 głosów
odpowiedź 3 kwietnia 2020 przez qwx6 Początkujący (300 p.)
edycja 3 kwietnia 2020 przez qwx6
Problem rozwiązany. Wystarczyło do parametru C++ dopisać nazwę pliku, w tym przypadku test.cpp, aby również się skompilował.
c++ %nameMainFile%.cpp -o Debug\%nameProgramDebug%.exe pytanie.cpp

Jeszcze jedno, obczaiłem co to jest ten MAKE, o którym mnie poinformowaliście.
Okazuje się, że jest to prawie to samo co windowsowe pliki wsadowe, tylko z większą ilością funkcji.
Na obecną chwilę nie widzę powodu, aby korzystać z tego Make'a. Wszystko w .bat ładnie działa.
komentarz 3 kwietnia 2020 przez j23 Mędrzec (195,220 p.)
Sugeruje zainteresować się CMake - jest przenośny między systemami i kompilatorami.

Podobne pytania

+2 głosów
3 odpowiedzi 1,154 wizyt
pytanie zadane 13 kwietnia 2015 w C i C++ przez 97kos Obywatel (1,390 p.)
0 głosów
1 odpowiedź 394 wizyt
pytanie zadane 1 lutego 2021 w PHP przez _Pita_ Stary wyjadacz (11,410 p.)
0 głosów
1 odpowiedź 587 wizyt
pytanie zadane 12 października 2015 w C i C++ przez C☺ndzi Stary wyjadacz (12,100 p.)

93,776 zapytań

142,732 odpowiedzi

323,384 komentarzy

63,379 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...