Если я хочу использовать указатель на класс и не выполняю с ним никаких операций, мы можем пересылать объявление класса. Но если это typedef, почему это не разрешено? В следующем примере он компилирует только я включаю закомментированный код, но почему компилятор хочет знать об этом в этот момент? Как пересылать объявление чего-либо, что может быть typedef. Есть ли какие-либо изменения в этом поведении в c ++ 0x?
#include <iostream>
using namespace std;
/*
template<class T>
class temp;
typedef temp<int> later;
*/
class later;
void somefunc(later*);
int main()
{
later* l;
somefunc(l);
return 0;
}
//The following is in someother file/compilation unit.
template<class T>
struct temp
{
public:
void print()
{
T t(5);
std::cout<< "helloworld: " << t << std::endl;
}
};
typedef temp<int> later;
void somefunc(later* l)
{
l = new later();
l->print();
}