gpt4 book ai didi

C++ 模板显式实例化

转载 作者:行者123 更新时间:2023-11-30 01:46:23 28 4
gpt4 key购买 nike

我有这样的工作代码。

#include <iostream>

struct A{
template<typename T>
void foo(T val);
};

template<typename T> void A::foo(T val)
{
std::cout << val << std::endl;
}

// link template "against" int
template void A::foo(int val);

// #include header here

int main(){
A a;
a.foo(12);
}

模板位于单独的 CPP 文件中,但由于显式实例化,链接有效:

template void  A::foo(int val);

然后我做了一些重构,代码看起来像这样:

#include <iostream>

template<typename G>
struct A{
template<typename T>
void foo(T val);
};

template<typename G>
template<typename T> void A<G>::foo(T val)
{
std::cout << val << std::endl;
}

// link template "against" int - not working
//template<typename G>
//template void A<G>::foo(int val);

int main(){
A<float> a;
a.foo(12);
}

如何“链接”T=int,但保持 G“未知”?

最佳答案

这称为显式实例化。

你不能这样做,因为G 是未知的,它不是单一类型。它是一组类型。

关于C++ 模板显式实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33276702/

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