Tôi đang gặp phải khó khăn lớn trong việc khai báo một loại templated như hình dưới đây.tuyên bố mẫu của `typedef typename Foo <T> :: Bar Bar '
#include <cstdlib>
#include <iostream>
using namespace std;
template <class T>
class Foo
{
typedef T Bar;
};
template <class T>
typedef typename Foo<T>::Bar Bar;
int main(int argc, char *argv[])
{
Bar bar;
Foo<int> foo;
system("PAUSE");
return EXIT_SUCCESS;
}
tôi nhận được lỗi
template declaration of `typedef typename Foo<T>::Bar Bar'
về dòng
template <class T>
typedef typename Foo<T>::Bar Bar;
Tôi làm điều này vì tôi muốn tránh phải viết typename Foo :: Bar Xuyên mã của tôi.
Tôi đang làm gì sai?
Cảm ơn bạn! tất cả các bạn đều hữu ích như nhau. Tôi ước tôi có thể chấp nhận cả ba câu trả lời nhận được. Dù sao tôi sẽ bỏ phiếu cho cả ba câu trả lời. – geraldCelente
@geraldCelente: Tôi không nghĩ rằng nó quan trọng hoặc bất cứ ai sẽ khó chịu - chọn câu trả lời bạn thấy hữu ích nhất :-) (Hoặc quăng một đồng xu.) –
là có một thư viện (ví dụ: boost) cung cấp một "backaround "cho các trình biên dịch vẫn đang rơi khỏi bandwagon C++ 11 (như trình biên dịch gcc/mingw)? –