gpt4 book ai didi

c++ - 在cpp文件中实现非模板类的模板成员

转载 作者:行者123 更新时间:2023-11-28 01:36:52 26 4
gpt4 key购买 nike

我有一个类:

// A.h
class A
{
void foo();
template <class T> void bar( T someVar );
}

#include "A.tcpp"

当我构建它时,出现链接器错误。但是,如果整个类都是一个模板,那么上面的示例将构建得非常好。所以我的问题是:

当拥有模板成员函数而不是拥有模板类时,如何坚持在 cpp 文件中拥有所有定义的模式?

最佳答案

如果您要将具有模板函数和非模板函数的类拆分为一个头文件和一个 tcpp 文件,那么您只需将模板定义放在 tcpp 文件中。非模板定义仍然需要进入常规 cpp 文件。

将非模板代码放入 tcpp 文件中,将其包含回头文件中,这意味着它会在包含它的每个翻译单元中进行定义。

在这种情况下,这意味着你应该有

// A.h
class A
{
void foo();
template <class T> void bar( T someVar );
}

#include "A.tcpp"

// A.tcpp
template <class T> void A::bar( T someVar ) { some code; }

// A.cpp
#include "A.h"

void A::foo() { some code; }

关于c++ - 在cpp文件中实现非模板类的模板成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48913141/

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