小编Ric*_*ard的帖子

模板专业化中的额外方法

我正在尝试使用一些方法/运算符等来编写模板化的类.现在,当类具有特定类型时,我希望有额外的追加方法,特别适用于那种类型,不适用于任何其他类型.我不想将所有代码复制到一个新类中.

例:

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)

这是可能吗?

格雷茨,理查德.

c++ templates

6
推荐指数
2
解决办法
1508
查看次数

在完全专用的类模板中初始化静态成员

我似乎无法在完全专业化的类模板中初始化静态成员!

我正在尝试执行以下操作:

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文件中,而不是放在头文件中.

谢谢你的时间,理查德.

c++ templates

6
推荐指数
1
解决办法
1036
查看次数

有某种条件的宏

我正在尝试创建一个宏,让我从一些打字中安全,并使其更好/更容易定义属性,这就是我的想法:

#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.只有在访问值适合该方法时,才应定义宏中的方法.

这是否有可能,例如使用元编程?

c++ macros metaprogramming c-preprocessor

0
推荐指数
1
解决办法
828
查看次数

标签 统计

c++ ×3

templates ×2

c-preprocessor ×1

macros ×1

metaprogramming ×1