typedef equivalent for int
typedef equivalent for int
如果我有模板容器,我可以使用 typedef
让我在编译时间查找类型:
template <typename T>
struct MyList {
typedef T Type;
T get_front() const;
// ...
};
MyList<char> char_list;
MyList<char>::Type front = char_list.get_front();
在这种情况下,您可以改为声明char front = char_list.get_front();
,但有时这可能很有用(例如,包含其他模板类的模板类)。
在我的情况下,模板没有指定打字名称,而是指定int(实际上是 std::size_t
):
template <std::size_t N>
struct MyClass {
// ...
};
我可以在同类中声明的类型中有等效的,这使我可以在课堂之外获得值n?这是使用静态常数的合适场所吗?
现代编译器上的通常方法是:
static const std::size_t value = N;
请注意,如果有人试图进行地址,这将提高不确定的行为。这通常意味着value
的地址可能会导致不同的翻译单元的不同位置,但是它的不确定的行为尽管如此。
通常在较旧的编译器上使用的另一种方法,并且不会离开不确定的行为开放开放的门是通过enums
:
enum { value = N };
boost.config 提供BOOST_STATIC_CONSTANT
宏,该宏将基于编译器的符合度,该宏将解析为一种或另一种方法。它的用法是:
BOOST_STATIC_CONSTANT( std::size_t, value = N );
Div>相关文章:
- for 循环说 - 错误 成员引用基类型"int [13]"不是结构或联合
- 优先级队列(使用 pairs<int,int> ) 根据 for 循环迭代器的顶级元素
- 从 for(int &i : i) 获取当前迭代器
- C :用sizeof()operator在for for loop中增加一个int变量,只能工作一次
- for(int i = 0; a[i]; i++) 是什么意思?
- for循环后,int值正在自行变化
- unicode of char misused for int
- 内部 for 循环:将文本和 int 转换为 const char* 并传递给函数
- 如何使用单 for 循环遍历 std::map<string>int 和 std::vector<int>?
- 在 for (int val :arr) 中,冒号是什么意思
- C++ 错误"Braces around scalar initializer for type int*"
- 为什么编译器显示错误"no match for 'operator[]' (operand types are 'carti' and 'int')"
- typedef equivalent for int
- C 可以使用for for for loop int i =容器
- 如何使用 for(int i:myVector) 代码样式知道元素是否是矢量中的最后一个元素
- 枚举上的"no 'operator++(int)' declared for postfix '++' [-fpermissive]"
- 现代编译器是否优化了for循环中使用的无符号int
- 'for' 循环中的 'int i = 0' vs. 'int i(0)'(赋值与初始化计数变量)
- Int to PCSTR for Winsock DEFAULT_PORT
- Cast int to void* and void* to int for TMemoryStream->WriteBuffer (C++Builder XE7)