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

C++ problem z klasami

Object Storage Arubacloud
+2 głosów
359 wizyt
pytanie zadane 14 lipca 2022 w C i C++ przez Nyax Nowicjusz (140 p.)

Cześć. Mam problem z odpaleniem takiego testowego programu z programowania obiektowego, czy mógłby ktoś wytłumaczyć co robię nie tak? Dodatkowo przykładowe kody z filmów na yt też mi nie działają.

#include <iostream>
#include "test1.h"

using namespace std;

void dlugopis::wczytaj(){
    cout << "Podaj nazwa" << endl;
    cin >> nazwa;
    cout << "Podaj dlugosc" << endl;
    cin >> dlugosc;
    cout << "Podaj kolor" << endl;
    cin >> kolor;


}

void dlugopis::wyswietl(){
    cout << nazwa << endl;
    cout << dlugosc << endl;
    cout << kolor << endl;
}
#include <iostream>
#include <string>
#include "test1.h"
using namespace std;
int main(){
    dlugopis p1;

    p1.wczytaj(); 
    p1.wyswietl();
    return 0;
}
#include <iostream>

using namespace std;

class dlugopis{
    public:
    string nazwa;
    int dlugosc;
    string kolor;

    void wczytaj();
    void wyswietl();
};

 

komentarz 14 lipca 2022 przez Apled Dyskutant (9,520 p.)
Kod wygląda ok, podaj lepiej jakie błędy się pojawiają przy uruchomieniu i z jakiego środowiska korzystasz.
komentarz 14 lipca 2022 przez Nyax Nowicjusz (140 p.)
VSC i DEV C++

undefined reference to `dlugopis::wyswietl()'

Id returned 1 exit status
komentarz 14 lipca 2022 przez Nyax Nowicjusz (140 p.)
z tym undefined jest więcej jeszcze.
komentarz 14 lipca 2022 przez Apled Dyskutant (9,520 p.)
Skopiowałem kod do siebie i odpala się bez żadnego zarzutu. To może być problem ze środowiskiem
komentarz 14 lipca 2022 przez Nyax Nowicjusz (140 p.)
A z czego korzystasz?
komentarz 14 lipca 2022 przez Apled Dyskutant (9,520 p.)
Visual Studio 2022

Ty podałeś dwa środowiska VSC i DEV C++, ale w którym konkretnie to pisałeś?
komentarz 14 lipca 2022 przez Nyax Nowicjusz (140 p.)
Próbowałem oba i nie działa.
komentarz 14 lipca 2022 przez Apled Dyskutant (9,520 p.)
VSC używasz z jakim kompilatorem?

VSC domyślnie sam nie dodaje do rozwiązania innych plików (tych z klasami), więc jak sam ich nie dodasz to nie będą one uwzględniane. Nie jestem pewny jak DEVC++ do tego podchodzi.
komentarz 14 lipca 2022 przez Nyax Nowicjusz (140 p.)
Mam Code Runnera zainstalowanego i coś robiłem z Mingw64.
komentarz 14 lipca 2022 przez Apled Dyskutant (9,520 p.)

Nie wiem jak masz ustawiony setup, ale obejrzyj to https://www.youtube.com/watch?v=YQT2G3f2LKg

Chodzi głównie o plik .json, bo bez tego możesz mieć problem z include'owaniem plików. Ewentualnie możesz poczytać o CMake.

komentarz 14 lipca 2022 przez Nyax Nowicjusz (140 p.)
A to ja kompletnie inaczej robiłem. Ja używałem MSYS2 do instalowania. Może ponownie skonfiguruje to wszystko, ale czy to zawsze trzeba dodawać to g++ itd.?
1
komentarz 14 lipca 2022 przez Apled Dyskutant (9,520 p.)
Wiesz co, najlepiej to sobie zainstaluj Visual Studio 2022 z C++ i tam się nie musisz babrać z takimi rzeczami. Jak dopiero zaczynasz z C++ (czy w ogóle z programowaniem), to setupowanie środowiska pod C++ z reguły jest nieintuicyjne.
komentarz 14 lipca 2022 przez cpp_lover Początkujący (290 p.)

@Nyax, 

Możesz to wrzucić do jednego pliku i na 100% zadziała.

#include <iostream>
#include <string>
using namespace std;
 
class dlugopis{
    public:
    string nazwa;
    int dlugosc;
    string kolor;
 
    void wczytaj();
    void wyswietl();
};
void dlugopis::wczytaj(){
    cout << "Podaj nazwa" << endl;
    cin >> nazwa;
    cout << "Podaj dlugosc" << endl;
    cin >> dlugosc;
    cout << "Podaj kolor" << endl;
    cin >> kolor;
 
 
}
 
void dlugopis::wyswietl(){
    cout << nazwa << endl;
    cout << dlugosc << endl;
    cout << kolor << endl;
}

int main(){
    dlugopis p1;
 
    p1.wczytaj(); 
    p1.wyswietl();
    return 0;
}

 

 

 

komentarz 14 lipca 2022 przez Nyax Nowicjusz (140 p.)
To jest płatne co nie? Dałbys linka?
komentarz 14 lipca 2022 przez Nyax Nowicjusz (140 p.)
Nie rozumiem pytania czy gdzies byłem. Ogólnie to taki program testowy i chciałem to podzielić na .h .cpp . Wiem, że można to w jednym, ale nie o to tu chodzi tu.
komentarz 14 lipca 2022 przez Apled Dyskutant (9,520 p.)

@Nyax, https://visualstudio.microsoft.com/pl/vs/

Wersja Community jest darmowa, pozostałe są płatne

komentarz 14 lipca 2022 przez Nyax Nowicjusz (140 p.)
Jest sens kupować lepszą wersję prof lub enter? Bo jeśli dużo daje, nawet na potem, to kupię.
komentarz 14 lipca 2022 przez Oscar Nałogowiec (29,320 p.)

@Nyax, Kompilujesz jeden plik, musisz skompilować oba i zlinkować.

komentarz 14 lipca 2022 przez Nyax Nowicjusz (140 p.)
Jak to się robi?
komentarz 14 lipca 2022 przez Oscar Nałogowiec (29,320 p.)

Zależy z czego korzystasz. W różnych IDE zwykle jest pojęcie projektu, które definiuje m. in. jakie pliku muszą zostać skompilowane i zlinkowane. Też zwykle tam są różne opcje kompilacji i linkowania (np. dodatkowe biblioteki do linkowania). Nie używam żadnego IDE więc nie mogę podać gdzie się to w konkretnych IDE ustawia.

Jeśli korzystasz z konsoli i edytora odpowiednikiem projektu jest makefile - plik dla specjalnego programu budującego aplikację (make), który potrafi zminimalizować liczbę wykonywanych operacji w zależności, czy już była wykonywana kompilacja i co od tamtej pory się zmieniło.

Dla bardzo prostych aplikacji można po prostu napisać sktypt kompilujący po kolei wszystko i linkujący. Np. g++/gcc to taki kombajn który rozpoznaje co może zrobić z podanymi plikami. W sumie wystarczyłoby

g++ main.cpp dlugopis.cpp

Kompilacja dwóch plików źródłowych i ich zlinkowanie.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 301 wizyt
pytanie zadane 12 stycznia 2020 w C i C++ przez Dawid_1900 Nowicjusz (210 p.)
0 głosów
4 odpowiedzi 625 wizyt
pytanie zadane 5 września 2015 w C i C++ przez 0xf Dyskutant (8,180 p.)
0 głosów
1 odpowiedź 363 wizyt
pytanie zadane 11 września 2018 w C i C++ przez oliwzcak12 Użytkownik (550 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...