我有以下类定义:
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”。可以修复我的类定义,以便它将表现出相同的行为。这就是摆脱歧义。
答案 0 :(得分:0)
也许
return_type visit(char elem) const;
return_type visit(T elem, ...) const;
答案 1 :(得分:0)
我确定你已经知道了 - 如果你是的话 试图从你的课外调用visit() 你的typedef在你的班级里面。为什么没有 如果是visit(),则在类外的某个地方使用typedef 该类用户调用的函数(我不是 确定这是你正在尝试做的事情)
当我在课堂上尝试使用typedef时,我遇到了问题 从课外调用函数 - 但是什么时候 我把classdef移到了课外,我没有 问题。
如果你真的只在里面使用typedef 上课,你有什么意义