小编ben*_*est的帖子

模板化成员函数和继承

我在一个类中声明了一个模板成员函数,该函数根据类型调用正确的成员函数,并且希望通过添加成员函数在子类中向其添加一些功能,如下面的 main.cpp 示例所示:

#include <iostream>

class A
{
public:
    template <typename T>
    void handleSocketData(const T& t)
    {
        handleData(t);
    }

    void handleData(int data)
    {
        std::cout << data << std::endl;
    }

};

class B: public A
{
public :
    void handleData(std::string data) const
    {
        std::cout << data << std::endl;
    }
};

int main(int argc, char *argv[])
{
    A a;
    B b;
    a.handleSocketData<int>(30);
    b.handleSocketData<std::string>("Hi");
    return 0;
}

Run Code Online (Sandbox Code Playgroud)

我的问题是,b.handleSocketData<QString>("Hi");实际上确实在 A 类中生成了一个新的模板实例,如命令的输出所示/usr/bin/clang++ -DQT_CORE_LIB -isystem /usr/include/qt6/QtCore -isystem /usr/include/qt6 -isystem /usr/lib64/qt6/mkspecs/linux-g++ -g -std=gnu++17 -Xclang …

c++ c++17

2
推荐指数
1
解决办法
106
查看次数

标签 统计

c++ ×1

c++17 ×1