C++ C++;在gettor函数中使用模板

C++ C++;在gettor函数中使用模板,c++,templates,C++,Templates,假设有两种类型的对象A和B以及两个getter函数 objA* getA(int id) and objB* getB(int id) 对象A和对象B是互斥的。i、 如果一个对象是a,那么它不是B。 当使用ID查找对象时,我使用的代码如下。所以我只是想知道函数是否可以返回非空的对象指针,它可以使用模板指向A或B。如果id无效,则返回null void find(int id) { objA* pa = getA(id); if (pa != NULL) {

假设有两种类型的对象A和B以及两个getter函数

objA* getA(int id) and objB* getB(int id)
对象A和对象B是互斥的。i、 如果一个对象是a,那么它不是B。 当使用ID查找对象时,我使用的代码如下。所以我只是想知道函数是否可以返回非空的对象指针,它可以使用模板指向A或B。如果id无效,则返回null

void find(int id)
{
    objA* pa = getA(id);
    if (pa != NULL)
    {
      return;
    }

    objB* pb = getB(id);
    if (pb != NULL)
    {
      return;
    }
}
我想这是你需要的。它是单个对象的抽象,可能是几种类型之一。然后,您的函数签名变成:

boost::variant<A*, B*> find(int id);
boost::变量查找(int-id);