but fonts in m_fighter(fonts) is underlined red and it says "Error: no suitable conversion from "FontHolder" to "Fighter*" exists. Why is it expecting a Fighter* there? If i do m_fighter(new Fighter(fonts)) the error goes away but i get problems in other places. Why cant i just do m_fighter(fonts)?
Why does Fighter* m_fighter expect a Fighter*?
m_fighter is a pointer. Pointer stores an address.
Constructor parameter fonts is a reference. Reference is not a pointer.
You could m_fighter( &fonts ),, but do you know the lifetime of the object that is passed as 'fonts' to constructor? Do you promise not to attempt delete of the m_fighter?