1
4
是的,在类外成员函数定义中,必须为嵌套的返回类型使用完全限定名。顺便说一句,这与模板无关。非模板类也是如此。
在您的例子中,它是一个模板类,因此,由于您使用限定名来引用依赖模板类中的嵌套类型,因此必须在它前面加上关键字
但是,您只需要限定返回类型。参数类型不需要限定
您也可以选择对参数类型使用限定名,但在这种情况下,您必须对返回类型执行相同的操作(原因非常相同):用
|
2
3
从有效的C++项目42:“每当你在模板中引用嵌套的依赖类型名称时,必须立即用单词类型名称来表示它。” 大小不嵌套在依赖于模板参数的任何内容中。你做了typedef,但它的大小总是一样的。 这就是它的样子,尺寸是什么? 做 取决于模板参数。
size_type是一种嵌套的foo类型。 |
3
2
您是正确的;类型需要限定,因为您的typedef是在类的范围内而不是在全局范围内给定的。我不知道如何在不污染全球范围的情况下美化它,这是个坏主意。但是,看起来您的函数很短,所以为什么不直接在内联中定义它们呢?这样可以节省很多额外的打字时间,而且,嗯,它更容易阅读。 |
GTAVLover · C++根据给定的类型名从变量返回数据 7 年前 |
user3417339 · 类模板交互 10 年前 |
user2891951 · 依赖作用域中的typename 11 年前 |
Rubens · C++类迭代器实用程序:定义和用法 11 年前 |