2

我有以下类定义:

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

4

2 回答 2

0

我确定您已经知道这一点 - 如果您尝试从班级外部调用 visit() ,那么您的 typedef 就在班级内部。如果类的用户调用了 visit() 函数,为什么不在类之外的某个地方使用 typedef(我不确定这是否是你想要做的)

当我在课堂内尝试使用 typedef 时,我在从课堂外调用该函数时遇到了问题 - 但是当我将 typedef 移到课堂外时,我没有遇到任何问题。

如果您真的只在类中使用 typedef,那么您所拥有的是有意义的

于 2012-06-07T21:22:22.897 回答
0

也许

return_type visit(char elem) const;
return_type visit(T elem, ...) const;
于 2012-06-07T21:00:59.427 回答