如何使函数接受指向不同类的指针?

q0987
#include <iostream>

struct ClassA
{
    int m_age = 1;
    int m_height = 2;
};

struct ClassB
{
    int m_age = 3;
    int m_height = 4;
    char m_grade = 'C';
};

void print_classa_info(const ClassA* ptr)
{
    std::cout << "age: " << ptr->m_age << std::endl;
}

void print_classb_info(const ClassB* ptr)
{
    std::cout << "age: " << ptr->m_age << std::endl;
}

int main()
{
    ClassA classA;
    ClassB classB;

    print_classa_info(&classA);
    print_classb_info(&classB);
    return 0;
}

>正如你所看到的,print_classX_info只是指双方的共同领域ClassAClassB还要假设我们不能同时修改ClassAClassB我如何定义一个函数,该函数可以使用指向ClassA*的指针ClassB*,而不必为ClassA定义两个打印函数ClassB

谢谢

songyuanyao

制作功能模板。

template <typename T>
void print_class_info(const T* ptr)
{
    std::cout << "age: " << ptr->m_age << std::endl;
}

如果要确保T必须为ClassAClassB,则可以申请std::enable_if(使用其他类型的LIVE调用时,将得到不匹配的函数错误)。例如

template <typename T>
std::enable_if_t<std::is_same_v<T, ClassA> || std::is_same_v<T, ClassB>>
print_class_info(const T* ptr)
{
    std::cout << "age: " << ptr->m_age << std::endl;
}

从C ++ 20开始,我们还可以使用Constraints

template <typename T>
void print_class_info(const T* ptr)
requires std::is_same_v<T, ClassA> || std::is_same_v<T, ClassB>
{
    std::cout << "age: " << ptr->m_age << std::endl;
}

生活

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

指向不同类方法的函数指针

来自分类Dev

指向使用不同类型参数的不同函数的指针是否可以兼容?

来自分类Dev

如何让我的函数接受不同类型的输入?

来自分类Dev

指向构造函数C ++中不同类的指针初始化

来自分类Dev

如何在不同类的私有成员中声明指向类对象数组的指针?

来自分类Dev

不同类的成员函数指针的C ++映射

来自分类Dev

如何动态接受不同类类型的RequestBody

来自分类Dev

如何创建指向函数指针的指针?

来自分类Dev

如何在同一函数中接受不同类型的切片?

来自分类Dev

在PostgreSQL中,如何声明一个接受不同类型参数的可变参数函数?

来自分类Dev

模板参数接受指向类成员函数的指针

来自分类Dev

指向同时接受const和非const参数的函数的指针

来自分类Dev

从结构定义中声明指向接受结构的函数的指针?

来自分类Dev

如何制作指向带有不同数量参数的函数的函数指针?

来自分类Dev

使tqdm等函数在Python中接受不同类型的参数

来自分类Dev

如何指向不同层次的函数

来自分类Dev

指向虚函数的指针与指向非虚函数的指针有何不同?

来自分类Dev

指向不同类型的指针能否具有不同的二进制表示形式?

来自分类Dev

如何区分指向重载函数的指针?

来自分类Dev

如何正确传递指向函数的指针?

来自分类Dev

指向成员函数的指针如何工作?

来自分类Dev

C ++如何使函数指针指向类方法

来自分类Dev

如何从函数返回指向数组的指针?

来自分类Dev

如何创建指向函数C ++的指针的线程

来自分类Dev

C ++如何创建指向函数的常量指针?

来自分类Dev

如何从 Swift 中的不同类调用函数?

来自分类Dev

指向成员函数的指针与指向数据成员的指针有何不同?

来自分类Dev

可变参数函数模板接受任何指针(指向变量,函数,成员函数等)作为参数

来自分类Dev

使用相同的指针指向具有不同参数的函数

Related 相关文章

  1. 1

    指向不同类方法的函数指针

  2. 2

    指向使用不同类型参数的不同函数的指针是否可以兼容?

  3. 3

    如何让我的函数接受不同类型的输入?

  4. 4

    指向构造函数C ++中不同类的指针初始化

  5. 5

    如何在不同类的私有成员中声明指向类对象数组的指针?

  6. 6

    不同类的成员函数指针的C ++映射

  7. 7

    如何动态接受不同类类型的RequestBody

  8. 8

    如何创建指向函数指针的指针?

  9. 9

    如何在同一函数中接受不同类型的切片?

  10. 10

    在PostgreSQL中,如何声明一个接受不同类型参数的可变参数函数?

  11. 11

    模板参数接受指向类成员函数的指针

  12. 12

    指向同时接受const和非const参数的函数的指针

  13. 13

    从结构定义中声明指向接受结构的函数的指针?

  14. 14

    如何制作指向带有不同数量参数的函数的函数指针?

  15. 15

    使tqdm等函数在Python中接受不同类型的参数

  16. 16

    如何指向不同层次的函数

  17. 17

    指向虚函数的指针与指向非虚函数的指针有何不同?

  18. 18

    指向不同类型的指针能否具有不同的二进制表示形式?

  19. 19

    如何区分指向重载函数的指针?

  20. 20

    如何正确传递指向函数的指针?

  21. 21

    指向成员函数的指针如何工作?

  22. 22

    C ++如何使函数指针指向类方法

  23. 23

    如何从函数返回指向数组的指针?

  24. 24

    如何创建指向函数C ++的指针的线程

  25. 25

    C ++如何创建指向函数的常量指针?

  26. 26

    如何从 Swift 中的不同类调用函数?

  27. 27

    指向成员函数的指针与指向数据成员的指针有何不同?

  28. 28

    可变参数函数模板接受任何指针(指向变量,函数,成员函数等)作为参数

  29. 29

    使用相同的指针指向具有不同参数的函数

热门标签

归档