Ahoj, mám takový problém, potřebuji v šablonové třídě udělat členskou třídu a v té udělat přátelské funkce. Přítel té první šablony mi udělat jde, ale té člencké třídy ne.
Udělal jsem takoveý zjednodušeneý program, ktereý vystihuje problém.
Píše mi to: could not deduce template argument for 'U'.
Jen dodám: VS2008 (Windows).
#include <iostream>
template <typename T>
class A
{
public:
template <typename U>
friend bool operator != (const A<U> &a1, const A<U> &a2);
class B
{
template <typename U>
friend bool operator !=(typename const A<U>::B &b1, typename const A<U>::B &b2);
};
};
template <typename U>
bool operator != (const A<U> &a1, const A<U> &a2)
{
return false;
}
template <typename U>
bool operator !=(typename const A<U>::B &b1, typename const A<U>::B &b2)
{
return false;
}
int main()
{
A<int> a1;
A<int> a2;
A<int>::B b1;
A<int>::B b2;
std::cout << (a1 != a2);
std::cout << (b1 != b2); // na tomto řádku mi to vypisuje chybu
std::cin.get();
}