là nó có thể trong C++ để tạo ra một bí danh của lớp mẫu (mà không cần chỉ định tham số)?Typedef (bí danh) của một lớp chung
typedef std::map myOwnMap;
không hoạt động.
Và nếu không, có lý do chính xác nào không?
là nó có thể trong C++ để tạo ra một bí danh của lớp mẫu (mà không cần chỉ định tham số)?Typedef (bí danh) của một lớp chung
typedef std::map myOwnMap;
không hoạt động.
Và nếu không, có lý do chính xác nào không?
Trong C++ 98 và C++ 03 typedef
chỉ có thể được sử dụng trên một loại hoàn chỉnh:
typedef std::map<int,int> IntToIntMap;
Với C++ 0x có một bóng mới cú pháp để thay thế typedef
:
using IntToIntMap = std::map<int,int>;
mà cũng hỗ trợ template
răng cưa:
template <
typename Key,
typename Value,
typename Comparator = std::less<Key>,
typename Allocator = std::allocator< std::pair<Key,Value> >
>
using myOwnMap = std::map<Key,Value,Comparator,Allocator>;
Ở đây bạn đi :)
Tính năng này sẽ được giới thiệu trong C++ 0x, được gọi là bí danh mẫu. Nó sẽ trông như thế này:
template<typename Key, typename Value>
using MyMap = std::map<Key, Value>
Mẫu máy đánh chữ không được hỗ trợ trong tiêu chuẩn C++ 03. Có cách giải quyết, tuy nhiên:
template<typename T>
struct MyOwnMap {
typedef std::map<std::string, T> Type;
};
MyOwnMap<int>::Type map;
Tôi nghĩ tốt nhất bạn có thể làm là 'sử dụng std :: map;' để nhập 'map' vào không gian tên cục bộ. –