problem z klasą

Feb 13, 2019 at 2:13pm
Witam. Program służy do spisywania samochodow. Składa się on z trzech plików: main.cpp, samochod.h, samochod.cpp.
Pojawia się błąd:
undefined reference to `samochod::dodaj_samochod()'|
||error: ld returned 1 exit status|
Proszę o pomoc w usunięciu błędu.

//MAIN:
#include <iostream>
#include "samochod.h"

using namespace std;

int main()
{
samochod s1;
s1.dodaj_samochod();
s1.wypisz();

return 0;
}


//SAMOCHOD.H:
#include <iostream>
using namespace std;

class samochod
{
public:
string marka;
int rocznik;

void dodaj_samochod();
void wypisz();
};


//SAMOCHOD.CPP:
#include <iostream>
#include "samochod.h"

using namespace std;

void samochod::dodaj_samochod()
{
cout<<"DODAWANIE NOWEGO SAMOCHODU: "<<endl;
cout<<"podaj marke: ";
cin>>marka;
cout<<"podaj rocznik: ";
cin>>rocznik;

}
void samochod::wypisz()
{
if(marka=="fiat") cout<<marka<<'\t'<<rocznik<<" rocznik";
else if(marka=="bmw") cout<<marka<< rocznik<<" rocznik";
else if(marka=="wv") cout<<marka<<rocznik<<" rocznik";
}


Last edited on Feb 13, 2019 at 2:14pm
Feb 13, 2019 at 2:20pm
How are you compiling & linking? What is the command you compile with? Are you sure that samochod.cpp is being compiled?
Last edited on Feb 13, 2019 at 2:22pm
Feb 13, 2019 at 2:36pm
samochod.cpp się nie kompiluje
Feb 13, 2019 at 3:15pm
At first sight, it seems there are not guard blocks in your header file.
Please, let us know if this version compiles or not:

Samochod.hpp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef SAMOCHOD_HPP
#define SAMOCHOD_HPP


#include <string>


class Samochod {
public:
    std::string marka;
    int rocznik;

    Samochod() = default;

    void dodaj_samochod();
    void wypisz();
};


#endif // SAMOCHOD_HPP 



Samochod.cpp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "Samochod.hpp"
#include <iostream>


void Samochod::dodaj_samochod()
{
    std::cout << "Dodawanie nowego samochodu:\n"
                 "podaj marke: ";
    std::cin >> marka;
    std::cout << "Podaj rocznik: ";
    std::cin >> rocznik;
}


void Samochod::wypisz()
{
    if     (marka == "fiat") { std::cout << marka << '\t' << rocznik << " rocznik\n"; }
    else if(marka ==  "bmw") { std::cout << marka << rocznik << " rocznik\n"; }
    else if(marka ==   "wv") { std::cout << marka << rocznik << " rocznik\n" ; }
}



main.cpp:
1
2
3
4
5
6
7
8
9
10
11
12
#include "Samochod.hpp"
#include <iostream>


int main()
{
    Samochod s1;
    s1.dodaj_samochod();
    s1.wypisz();

    return 0;
}

Topic archived. No new replies allowed.