我正在尝试使用一些方法/运算符等来编写模板化的类.现在,当类具有特定类型时,我希望有额外的追加方法,特别适用于那种类型,不适用于任何其他类型.我不想将所有代码复制到一个新类中.
例:
template<typename T>
class Buffer
{
Buffer(const Buffer<Type> &Buffer) : mData(Buffer.mData)
{
}
Buffer<Type> Clone()
{
}
void Append (T * aData)
{
}
// this one should only be there when Type is an unsigned char
void Append (wchar_t * aData)
{
}
}
Run Code Online (Sandbox Code Playgroud)
这是可能吗?
格雷茨,理查德.
我似乎无法在完全专业化的类模板中初始化静态成员!
我正在尝试执行以下操作:
template<typename Type>
class X
{
};
template<>
class X<int>
{
public:
static int Value;
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法初始化静态成员,我尝试了一切像:
template<>
int X<int>::Value = 0;
Run Code Online (Sandbox Code Playgroud)
它没有编译,所以任何关于如何实际执行此操作的指针都会很好;)
编辑:下面的答案是正确的,但您还需要将init放在.cpp文件中,而不是放在头文件中.
谢谢你的时间,理查德.
我正在尝试创建一个宏,让我从一些打字中安全,并使其更好/更容易定义属性,这就是我的想法:
#define DefineProperty(Access, Type, Name) \
property<Access, Type> ##Name; \
void Set##Name(Type); \
Type Get##Name(void); \
Run Code Online (Sandbox Code Playgroud)
Access是一个包含三个可能值的枚举:ReadOnly,WriteOnly和ReadWrite.只有在访问值适合该方法时,才应定义宏中的方法.
这是否有可能,例如使用元编程?