【发布时间】:2011-09-13 06:56:19
【问题描述】:
免责声明:以下问题可能是如此简单,以至于我看到第一个答案可能会感到震惊。此外,我想为任何重复的问题道歉 - 语法问题并不总是很容易通过口头解释来识别,因此搜索它们并不容易......
但够了。我有两个模板类,其中一个有一个模板成员函数,另一个类尝试调用该函数。一个最小的错误产生示例如下所示:
#include <iostream>
template <typename T>
class Foo {
public:
Foo() {
}
template <typename outtype>
inline outtype bar(int i, int j, int k = 1) {
return k;
}
};
template <typename T>
class Wrapper {
public:
Wrapper() {
}
double returnValue() {
Foo<T> obj;
return obj.bar<double>(1,2); // This line is faulty.
}
};
int main() {
Wrapper<char> wr;
double test = wr.returnValue();
std::cout << test << std::endl;
return 0;
}
在编译时,这会导致
expected primary-expression before 'double'
expected ';' before 'double'
expected unqualified-id before '>' token
所有错误消息都指向代码中标记的链接。
我已经感谢您的想法,无论它们多么明显。
【问题讨论】:
-
由于无法推断其设置,因此需要显式限定。如果没有模板,我们会得到一个语法错误,这将被视为