如何只操作一个功能不同的类

发布于 2024-09-04 08:20:14 字数 175 浏览 5 评论 0原文

class A {};

class B {};

class C {};

class D {};

//A+B , A+C, B+C , A+D, D+C  namely all of these combinations will be possible just one functions 
class A {};

class B {};

class C {};

class D {};

//A+B , A+C, B+C , A+D, D+C  namely all of these combinations will be possible just one functions 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怪我鬧 2024-09-11 08:20:14
template <typename T, typename U>
void foo(const T& pX, const U& pY)
{
    // do stuff
}

这本身并不是您想要的,因为它为 TU 的每种不同组合创建一个新函数,但它是一个函数模板。


这会禁止 TU 相同:

template <bool> struct static_assert {};
template <> struct<true> static_assert {};

#define STATIC_ASSERT(pValue) static_assert<(pValue)>()

// ...

template <typename T, typename U>
struct is_different
{
    static const bool value = true;
};

template <typename T>
struct is_different<T, T>
{
    static const bool value = false;
};

// ...

template <typename T, typename U>
void foo(const T& pX, const U& pY)
{
    STATIC_ASSERT(is_different<T, U>::value);

    // do stuff
}
template <typename T, typename U>
void foo(const T& pX, const U& pY)
{
    // do stuff
}

This isn't what you want, per se, as it makes a new function for each different combination of T and U, but it is one function template.


This prohibits T and U from being the same:

template <bool> struct static_assert {};
template <> struct<true> static_assert {};

#define STATIC_ASSERT(pValue) static_assert<(pValue)>()

// ...

template <typename T, typename U>
struct is_different
{
    static const bool value = true;
};

template <typename T>
struct is_different<T, T>
{
    static const bool value = false;
};

// ...

template <typename T, typename U>
void foo(const T& pX, const U& pY)
{
    STATIC_ASSERT(is_different<T, U>::value);

    // do stuff
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文