const MyGlobalClass->HSV &hsv
rozhodně ne.
Deklaruj MyGlobalClass v nějakém hlavičkovém souboru (dobrá konvence je přípona .h pokud obsahuje pouze rozhraní, .hpp pokud obsahuje i implementaci, ale extra často se nepoužívá).
Ten hlavičkový soubor includni.
Jestli metody rgb2hsv a hsv2rgb jsou v MyGlobalClass, pak zkus struktury deklarovat PŘED tím, než je použiješ.
Pak snad není důvod, aby nefungovalo void rgb2hsv(const MyGlobalClass::RGB &rgb, const MyGlobalClass::HSV &hsv){};
Jinak použití referencí je obvykle preferováno nad ukazateli. Dá se použít chytrý ukazatel (std::unique_ptr, std::shared_ptr a std::weak_ptr v hlavičce <memory> pro C++ 11; pro C++ 03 byl dostupný std::auto_ptr, který je teď deprecated a jeho funkci plní právě shared_ptr), který se obvykle předává jako konstantí reference: void function(const shared_ptr<MyGlobalClass::RGB>& rgb). Nebudeš muset tolik myslet na paměť.
C++ je dost komplexní jazyk, dá se v něm psát čitelný high-level kód na první pohled k nerozeznání od Javy nebo C#, na druhou stranu jsou tam věci pro opravdu low-level programování a spousta konstrukcí, které Ti umožní se střelit do nohy a ustřelit si ji. Jo a to, že v hlavičkovém souboru zapomeneš středník, zdechne Ti kompilace a kompilátor ohlásí nesmyslnou chybu v dalším includnutém souboru, což klidně může být <iostream>, je normální. Rozhodně to není dobrý jazyk pro učení se základů.
A jinak opravdu, chybí Ti naprosté základy. Pustil ses na své schopnosti do příliš složitého projektu. Sorry, že Ti to znovu píši (já vím, už Tě to musí s..t, je to snad po páté), ale když si přiznáš, že na to teď nemáš, budeš věnovat měsíc až dva učením se základů C++ od znova, může z Tebe být dobrý programátor. Vůli na to máš. Argument, že máš za sebou 2 semestry je mimo - neumíš základy. Stejně tak argumentace zkušenostmi z PHP... ve Tvém případě je to 0 a ani zdvojnásobení nebude mít efekt.