typename相关内容

我必须在哪里以及为什么要放置“模板"?和“类型名称"关键词?

在模板中,我必须在何处以及为什么必须将 typename 和 template 放在依赖名称上? 究竟什么是从属名称? 我有以下代码: 模板//Tail 也将是一个 UnionNode.结构联合节点:公共尾巴{//...模板结构联合{//Q: 在哪里添加类型名/模板?typedef Tail::inUnion假;};模板 我遇到的问题在于 typedef Tail::in ..
发布时间:2022-01-30 15:46:06 C/C++开发

为什么我需要在 g++ 中使用 typedef typename 而不是 VS?

GCC 已经有一段时间没有抓住我了,但它就发生在今天.但我从来不明白为什么 GCC 需要在模板中使用 typedef typename,而 VS 和我猜想 ICC 不需要.typedef typename 是“错误"还是过于严格的标准,还是留给编译器编写者的东西? 对于那些不明白我的意思的人,这里有一个示例: templatebool find(const std::map ..
发布时间:2022-01-23 20:14:18 C/C++开发

typename 的意外结果

我从 typename 得到了一些意想不到的结果,我很困惑.希望有些人可以为我指明正确的方向. 私有子T()Dim d 为 Word.DocumentDim s 作为字符串Dim c As Collection昏暗的我变暗作为对象设置 d = ActiveDocuments = "X"设置 c = 新集合Debug.Print "d 是一个 " &类型名称(d)Debug.Print "s 是一 ..
发布时间:2021-12-31 11:00:41 其他开发

使用带有模板函数参数的 typename 关键字

在 C++ 中,需要 typename 关键字,以便编译器可以消除模板中嵌套类型和嵌套值之间的歧义.但是,在某些情况下是不可能出现歧义的,例如派生类继承自嵌套类类型时. template 派生类:公共 T::type{ }; 此处typename 关键字不是必需的,实际上甚至不允许使用.这是有道理的,因为上下文消除了歧义.在这里,T::type 必须引用一个类型,因为你显然不能从一个值继承. ..
发布时间:2021-12-13 19:09:08 C/C++开发

我什么时候应该使用关键字“typename"?使用模板时

我最近一直在做一个小项目,但我想不出什么.. 我得到了一个包含类的 .h 文件,使用了 typename 模板.在那个班级里面有一个私人班级. template 类东西{上市:某物();〜某事();节点* Function1(int index);int Index(const T& id);私人的:类节点(){上市:T id;//想象其余的节点};}; 当我想定义“Something" ..
发布时间:2021-12-13 19:05:39 C/C++开发

在 typedef 和 new 中使用 typename 关键字

考虑这个代码, template结构体示例{类型名称 T::X *x;//声明指向T的X的指针}; 在上面的代码中,关键字typename是编译器所必需的,以便它可以在模板中消除嵌套类型和嵌套值之间的歧义.这意味着,在没有 typename 关键字的情况下,编译器会将其解释为 T::X 与 x 的乘法, T::X *x;//将 T::X 与 x 相乘 因此在可能出现歧义的情况下,关键字ty ..
发布时间:2021-12-13 19:03:14 C/C++开发

C++ 模板类型名迭代器

考虑以下头文件: template 结构节点{数据;//该节点中包含的数据list*>子节点;//此tNode下的tNodes指针列表tNode(const T& theData)//PRE:数据被初始化//POST: this->data == theData 和 this->SubNodes 有一个初始容量//等于INIT_CAPACITY,设置为子节点的头部{this->Data = th ..
发布时间:2021-12-13 19:00:24 C/C++开发

为什么关键字“typename"是需要在限定的从属名称之前,而不是在限定的独立名称之前?

A 类{静态整数迭代器;类迭代器{[...]};[...]}; 我(认为我)理解这里需要 typename 的原因: template 无效的 foo() {类型名 T::iterator* iter;[...]} 但我不明白为什么这里不需要typename: void foo() {A::迭代器*迭代器;[...]} 谁能解释一下? 编辑: 后面编译器没有问题的原因,我在评 ..
发布时间:2021-12-13 18:53:37 C/C++开发

C++ 获取模板中的类型名称

我正在编写一些模板类来解析一些文本数据文件,因此很可能绝大多数解析错误都是由于数据文件中的错误引起的,而这些错误大部分不是由程序员编写的,所以需要一个关于为什么应用程序加载失败的好消息,例如类似: 解析 example.txt 时出错.[MySectiom]Key 的值 ("notaninteger") 不是有效整数 我可以从传递给模板函数的参数和类中的成员变量中计算出文件、部分和键的 ..
发布时间:2021-12-13 18:26:45 C/C++开发

什么时候是“typename"需要关键字吗?

可能的重复: 正式来说,typename 是做什么用的? 我必须将模板放在哪里以及为什么和 typename 关键字? 考虑下面的代码: templateC类{结构 P {};向量 vec;无效 f();};模板void C::f() {typename vector ::iterator p = vec.begin();} 为什么在这个例子中需要“typename"关键字 ..
发布时间:2021-12-13 18:18:10 C/C++开发

为什么不能在 C++ 中重新定义类中的类型名称?

根据本书 C++ Primer 部分,7.4.1 Type Names Are Special: 通常,内部作用域可以从外部作用域重新定义名称,即使该名称已在内部作用域中使用.但是,在类中,如果成员使用外部作用域中的名称并且该名称是类型,则该类随后可能不会重新定义该名称. 相应地,例如: typedef double Money;类帐户{民众:钱余额(){ 返回 bal;}私人的:t ..
发布时间:2021-12-09 21:50:41 C/C++开发

我必须将“模板"放在哪里以及为什么要放?和“类型名称"关键词?

在模板中,我必须将 typename 和 template 放在从属名称的何处以及为什么? 究竟什么是从属名称? 我有以下代码: template //Tail 也将是一个 UnionNode.struct UnionNode : 公共尾{//...模板结构体联合{//Q: 这里在哪里添加类型名/模板?typedef Tail::inUnion假的;};模板{};};模板 //对于最后一 ..
发布时间:2021-12-01 14:36:41 C/C++开发

`typedef typename Foo<T>::Bar Bar' 的模板声明

我在声明如下所示的模板化类型时遇到了很大的困难. #include #include 使用命名空间标准;模板Foo类{typedef T 栏;};模板typedef typename Foo::Bar Bar;int main(int argc, char *argv[]){吧台;Foo富;系统(“暂停");返回退出成功;} 我收到错误 `typedef typename Foo::B ..
发布时间:2021-09-04 20:46:22 C/C++开发

C ++将字符串转换为类型名

因此,我找到了许多文章和帖子,说无法将 typename 转换为 string ,但是我没有找到相反的方法.我有一个具有专业化功能的 template : 模板无效foo(T sth){}模板void foo(int sth){}... 我正在从一个像这样构造的文件中读取内容: int 20双重12.492字符串词 是否有一种方法可以根据文件 ..
发布时间:2021-04-19 20:02:40 C/C++开发

C ++找不到从当前模板类继承的模板基类中定义的类型

我正在尝试编写模板的变体定义super类型习语的类.类Inherit引入了类型Super来表示可能非常长的超级类型,并且还需要知道派生的类型New来做一些我在这里没有显示的额外操作. 如果传递给New的类型不是模板,但对于模板失败,则可以正常工作.这是用clang++-3.8 -std=c++1y -Wall编译的完整示例(gcc给出相同的输出): struct SomeBase {} ..
发布时间:2020-07-12 05:17:05 C/C++开发