相关疑难解决方法(0)

正式,什么是typename?

有时我看到gcc在使用模板时吐出的一些非常难以理解的错误消息......具体来说,我遇到了一些问题,看似正确的声明引起了非常奇怪的编译错误,通过在"typename"关键字前加上前缀而神奇地消失了声明的开头...(例如,就在上周,我宣布两个迭代器作为另一个模板化类的成员,我必须这样做)...

关于typename的故事是什么?

c++ templates

116
推荐指数
6
解决办法
5万
查看次数

从struct获取关联类型的任何方法?

这段代码:

use std::collections::HashMap;

struct MyNode;
struct MyEdge;

struct Graph<N, E> {
    h: HashMap<N, Vec<E>>,
}

type MyGraph = Graph<MyNode, MyEdge>;

fn main() {

    let x: MyGraph::N;//XXX

    println!("Results:")

}
Run Code Online (Sandbox Code Playgroud)

无法编译错误:

error[E0223]: ambiguous associated type
  --> /home/xxx/.emacs.d/rust-playground/at-2017-07-26-164119/snippet.rs:21:12
   |
21 |     let x: MyGraph::N;
   |            ^^^^^^^^^^ ambiguous associated type
   |
   = note: specify the type using the syntax `<Graph<MyNode, MyEdge> as Trait>::N`
Run Code Online (Sandbox Code Playgroud)

有没有办法从中获取N类型Graph<MyNode, MyEdge>

我创建了一个type =不复制节点类型定义的别名(),所以在XXX我可以写的标记点上它会很棒let x: MyNode但是let x: expression with MyGraph …

rust

2
推荐指数
1
解决办法
819
查看次数

标签 统计

c++ ×1

rust ×1

templates ×1