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

时间:2012-06-07 20:50:12

标签: c++ overloading

我有以下类定义:

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”。可以修复我的类定义,以便它将表现出相同的行为。这就是摆脱歧义。

2 个答案:

答案 0 :(得分:0)

也许

return_type visit(char elem) const;
return_type visit(T elem, ...) const;

答案 1 :(得分:0)

我确定你已经知道了 - 如果你是的话 试图从你的课外调用visit() 你的typedef在你的班级里面。为什么没有 如果是visit(),则在类外的某个地方使用typedef 该类用户调用的函数(我不是 确定这是你正在尝试做的事情)

当我在课堂上尝试使用typedef时,我遇到了问题 从课外调用函数 - 但是什么时候 我把classdef移到了课外,我没有 问题。

如果你真的只在里面使用typedef 上课,你有什么意义