由于几个星期的14个小时的日子,我的大脑已经融化。模板类专用模板构造函数
我有一个模板类,我正在尝试为该类编写一个模板转换构造函数,并专门构造该构造函数。编译器(MSVC9)对我很不满意。这是我正在编写的实际代码的一个最简单的例子。编译器错误与代码内联。
帮我解开我的大脑。我需要什么语法来做我想做的事情?注意:在我的真实代码中,我必须在声明外定义了convert构造函数,所以这对我来说不是一种选择。
#include <string>
#include <sstream>
using namespace std;
template<typename A>
class Gizmo
{
public:
Gizmo() : a_() {};
Gizmo(const A& a) : a_(a) {};
template<typename Conv> Gizmo(const Conv& conv) : a_(static_cast<A>(conv)) {};
private:
A a_;
};
//
// ERROR HERE:
// " error C2039: 'Gizmo<B>' : is not a member of 'Gizmo<A>'"
//
template<> template<typename B> Gizmo<string>::Gizmo<typename B>(const B& b)
{
stringstream ss;
ss << b;
ss >> a_;
}
int main()
{
Gizmo<int> a_int;
Gizmo<int> a_int2(123);
Gizmo<string> a_f(546.0f);
return 0;
}
为了未来的读者,我在原始问题中删除了荒谬的'typename'。 – 2010-11-11 20:28:46