重载 C++ 中模板类中的成员函数

Overloading member functions within template class in C++

本文关键字:成员 函数 C++ 重载      更新时间:2023-10-16

我有以下类定义:

template <typename T>
class SeqVisitor {
public: 
    typedef string* return_type;
    return_type visit(int elem) const;
    return_type visit(char elem) const;
    return_type visit(T elem) const;
};

当我使用SeqVisitor<char>访问电话时是模棱两可的。如果我在类定义之外定义函数,对该函数的调用就不会模棱两可。编译器将选择具有用"char elem"而不是"T elem"。可以修复我的类定义,以便它表现出相同的行为。那就是摆脱歧义。

也许

return_type visit(char elem) const;
return_type visit(T elem, ...) const;
我相信

你已经知道这一点 - 如果你是尝试从类外调用 visit()你的 typedef 在你的类中。 为什么没有类外某处的 typedef,如果它是 visit()该类的用户正在调用的函数(我不是确定这是否是您要做的)

当我在课堂上尝试 typedef 时,我遇到了问题从类外部调用函数 - 但是当我把typedef移到了课堂外面,我没有问题。

如果你真的只在类,你拥有的有意义