单独定义模板化嵌套类方法的正确语法
Correct syntax for separate definition of templated nested class methods
我正在编写一个类,除了作为允许不同数字类型的模板之外,还需要一个额外的嵌套类:
template<typename _type>
class myClass{
// ...
class myNestedClass{
myNestedClass(int v1, int v2);
myNestedClass& operator= (std::vector<int> _vals);
operator std::vector<_type>() const;
// ...
}
// ...
template <typename _input_type> operator*= (_input_type _val);
// ...
}
我已经掌握了大部分语法,特别是如何在类定义后定义方法:
template <typename _type>
template <typename _input_type>
myClass<_type>& myClass<_type>::operator*=(_input_type _val){ /* */ };
但我无法对嵌套类方法遵循相同的方案:
template <typename _type>
myClass<_type>::myNestedClass::myNestedClass(int v1, int v2) { /* */ };
template <typename _type>
myClass<_type>::myNestedClass&
template <typename _type> myClass<_type>::myNestedClass::operator= (std::vector<int> _vals) { /* */ }
template <typename _type>
myClass<_type>::myNestedClass::operator std::vector<_type> () const { /**/ };
但是编译器抱怨最后两个方法定义,error: need 'typename' before 'myClass<_type>::myNestedClass' because 'myClass<_type>' is a dependent scope
那么我在这里到底写错了什么?
请参阅何时需要"typename"关键字?。
无论如何,你离得很近。修复后(加上一些错别字(:
template<typename _type>
class myClass{
// ...
class myNestedClass{
myNestedClass(int v1, int v2);
myNestedClass& operator= (std::vector<int> _vals);
operator std::vector<_type>() const;
// ...
};
// ...
template <typename _input_type> myClass<_type>& operator*= (_input_type _val);
// ...
};
template <typename _type>
template <typename _input_type>
myClass<_type>& myClass<_type>::operator*=(_input_type _val){ /* */ }
template <typename _type>
myClass<_type>::myNestedClass::myNestedClass(int v1, int v2) { /* */ }
template <typename _type>
typename myClass<_type>::myNestedClass& myClass<_type>::myNestedClass::operator= (std::vector<int> _vals) { /* */ }
template <typename _type>
myClass<_type>::myNestedClass::operator std::vector<_type> () const { /**/ }
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 在静态库中嵌入类方法
- 如何制作一个将函数作为参数的类方法
- 从父类方法返回子类对象
- 使用用户定义的参数调用future/async并调用类方法
- 重载类方法的不明确调用
- 单独定义模板化嵌套类方法的正确语法
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 如何访问由共享指针保存的类方法?
- 将子类方法声明为基类的友元
- 我的模板类方法返回错误类型?
- Qt将信号与另一个类方法连接
- 用于命名模板静态类方法的特定实例的语法
- 通过该类中定义的指针调用类方法时的语法
- 如何在源文件中定义类并将其声明在标题文件中(而不必使用`class :: method'语法定义类方法)
- 模板类方法语法
- 静态类方法指针数组的正确语法
- 非托管类方法:非标准语法;使用 '&' 创建指向成员的指针
- 需要语法帮助来专门化基于模板参数类型的类方法
- 一个c++语法问题:方法的类