

C++ unresolved external symbol
Zdravím. Dělám jeden projekt ve Visual Studiu 2013 a chci se zeptat, jak správně definovat metody jedné třídy ve více zdrojových souborech. Příklad:
class myclass
{
private:
int a;
int b;
public:
void uloz(int value1, int value2);
int soucet();
int rozdil();
};
Tato definice je dejme tomu v souboru head.h
A teď bych chtěl každou metodu definovat v samostatném .cpp souboru. Vytvořím soubory uloz.cpp, soucet.cpp a rozdil.cpp, na začátek dám #include "head.h" a metody definuji. Např.
// uloz.cpp
#include "head.h"
void myclass::uloz(int value1, int value2)
{
a = value1;
b = value2;
}
Při překladu se ovšem objeví chyba např. unresolved external symbol uloz.obj, že nebyla definována metoda soucet(); Pokud všechny metody definuji v jednom .cpp souboru, tak problém není. Tohle je jen příklad, ve skutečnosti je metod asi 2 desítky a některé z nich jsou na několik stovek řádků, proto bych chtěl pro lepší přehlednost definovat některé metody v dalších souborech. Jak to udělat správně?
Díky.
Proč to tak chceš mít? Rozdělit jednu třídu do více souborů je obvykle dost špatný nápad. Používá se to hlavně v situacích, kdy jedna část třídy je automaticky generovaná a druhou píše člověk. Aby obě (nebo dokonce více) psal člověk, to moc smysl nedává.
https://msdn.microsoft.com/en-us/library/hh755808. aspx
Kvůli přehlednosti, jak jsem psal. Ale jestli to není dobrý nápad, tak to holt dělat nebudu..
Ono to přehlednost právě výrazně snižuje. Pokud to chceš mít přehlednější, tak to rozděl do většího počtu menších tříd.