Mam problem ponieważ potrzebuje dodać bardzo obszerna funkcje do programu. Nie chcę żeby znajdowała się w pliku z funkcja main() ponieważ robi się nieczytelnie. Jednak mimo moich starań kompilator nie puszcza tego co nabazgrałem. O to kod przedstawiający mój problem.
Kod:
//dziedziczenie_test.cpp
#include <iostream>
#include "klasa_pierwsza.h"
void test();
int main()
{
klasa_pierwsza p1;
p1.a = 1;
std::cout << "p1.a: " << p1.a << std::endl;
test();
system("pause");
return 0;
}
Kod:
//klasa_pierwsza.h
ifndef klasa_pierwsza_h
#define klasa_pierwsza_h
#include <iostream>
class klasa_pierwsza
{
public:
int a;
void wywal();
};
void wywal()
{
std::cout << "wywal1" << std::endl;
}
#endif
Kod:
//klasa_dwa.h
#ifndef klasa_dwa_h
#define klasa_dwa_h
#include <iostream>
#include "klasa_pierwsza.h"
class klasa_dwa : public klasa_pierwsza
{
public:
int b;
void wywal2();
};
void wywal2()
{
std::cout << "wywal2" << std::endl;
}
#endif
Kod:
//klasa_dwa.cpp
#include <iostream>
#include "klasa_dwa.h"
void test()
{
klasa_dwa k2;
k2.wywal2();
}
To mi pluje kompilator i ciężko mi się ustosunkować do tego co mówi. Błędu 2019 w ogóle nie rozumiem...
Kod:
1>klasa_dwa.obj : error LNK2005: "void __cdecl wywal(void)" (?wywal@@YAXXZ) already defined in dziedziczenie_test.obj
1>klasa_dwa.obj : error LNK2019: unresolved external symbol "public: void __thiscall klasa_dwa::wywal2(void)" (?wywal2@klasa_dwa@@QAEXXZ) referenced in function "void __cdecl test(void)" (?test@@YAXXZ)
1>C:\Users\kk\documents\visual studio 2010\Projects\dziedziczenie_test\Debug\dziedziczenie_test.exe : fatal error LNK1120: 1 unresolved externals