Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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.

Předmět Autor Datum
Proč to tak chceš mít? Rozdělit jednu třídu do více souborů je obvykle dost špatný nápad. Používá se…
Wikan 26.04.2015 15:22
Wikan
Proč to tak chceš mít? Kvůli přehlednosti, jak jsem psal. Ale jestli to není dobrý nápad, tak to ho…
Niko Bellic 26.04.2015 15:26
Niko Bellic
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… poslední
Wikan 26.04.2015 15:48
Wikan

Zpět do poradny Odpovědět na původní otázku Nahoru