我有这堂课:
#include <iostream>
template<typename T, typename... TT>
class List
{
public:
typedef T head;
typedef List<TT...> next;
enum { size = sizeof...(TT)+1 };
};
和这个主要:
#include <iostream>
#include "List.h"
using namespace std;
template <int T>
struct Int {
enum { value = T };
};
int main() {
typedef List<Int<1>, Int<2>, Int<3>> list;
cout << list::template head.value << endl; // Error
cout << list::size; // Works
return 0;
}
错误讯息:
error: expected primary-expression before '.' token
cout << list::template head.value << endl;
我会感激任何帮助..过去半小时我一直试图解决这个问题,这可能是非常愚蠢的事情,我无法指责。
答案 0 :(得分:4)
template
是一种类型。这意味着您无法使用.
消除歧义,也无法使用std::cout << list::head::value << std::endl;
访问它。没有太多办法解决它:
using namespace std;
另外,请摆脱{{1}}。