【发布时间】:2014-01-13 21:27:01
【问题描述】:
我正在尝试编写一个具有部分和显式专业化的类。虽然名称查找怪癖有问题。现在我有:
template <typename C, typename R>
class Command {
public:
Command();
private:
void doTheDew() {
/* ... */
}
};
template <typename C, typename R>
Command<C, R>::Command() {
doTheDew();
}
template<typename R>
class Command<void, R> {
public:
Command() {
this->doTheDew();
}
};
template<typename C>
class Command<C, void> {
public:
Command() {
this->doTheDew();
}
};
template<>
class Command<void, void> {
public:
Command() {
this->doTheDew(); // 1
}
};
在标有“1”的行上出现错误
class Command<void, void> has no member named doTheDew
在这一点上我已经尝试了很多,但不明白我错过了什么。
【问题讨论】:
-
每个部分特化都是它自己的类。您需要提供
doTheDew的各自定义 -
也许我搞砸了术语,但部分专业化似乎有效(我需要 this 取消引用,否则我会遇到名称查找错误)。这只是我遇到问题的明确专业化。