gpt4 book ai didi

c++ - 在模板类中实例化嵌套模板函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:03:07 26 4
gpt4 key购买 nike

<分区>

如何在不对模板类进行虚拟调用的情况下实例化模板类的模板成员函数?

想象一个标题:class.h

#pragma once

template<class T>
class A {
public:

template<class R>
T b(R r);
};

类.cc

#include <limits>
#include "class.h"

template<class T> template<class R> T A<T>::b(R r)
{
/* Some code */
return std::numeric_limits<R>::max() - r;
}

void dummy()
{
A<int> a;
a.b<short>(2);
}

还有一些测试文件:

#include <iostream>
#include "class.h"

using namespace std;

int main(){

A<int> a{};
auto ans = a.b<short>(2);
cout << ans << " " << sizeof(ans) << endl;
}

如何强制编译器编译 A<int>::b<short>(short)无需在 class.cc 中调用它(因此有一个虚拟函数)或将所有内容放在 header 中(并且必须一直重新编译大量代码)。

我尝试了不同形式的 template A<int>;template <> template <> int A<int>::b(short)在 cc 文件中,但我无法编写正确的语法。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com