gpt4 book ai didi

c++ - 如何使用模板 extern 关键字分隔测试类型?

转载 作者:行者123 更新时间:2023-11-30 05:49:21 25 4
gpt4 key购买 nike

假设我有一些类型 X这是模板T :

// hpp file
template <typename T>
struct X
{
int Get();
};

extern template X<TraitsType>;

// cpp file
template <typename T>
int X<T>::Get() { return T::Get(); }

template X<TraitsType>;

类型T可能是生产环境中的随机数生成器 ( TraitsType ),但为了单元测试,它可能是一种将生成可预测或可伪造值的类型 (例如 TestTraitsType )。如果我想用这个TestTraitsType我现在要撒extern templatetemplate X<TestTraitsType> 的声明在我的整个hppcpp文件,这是不可取的,因为我用单元测试代码污染了我的生产代码。

如何在将这些类型实例化保存在单独的翻译单元中的同时避免这种情况?

最佳答案

在(私有(private))头文件 .inl(或 .hxx)中移动方法定义

  • // inl file
    template <typename T>
    int X<T>::Get() { return T::Get(); }
  • // cpp file
    #include "X.inl"

    template X<TraitsType>;
  • // test file
    #include "X.inl"

    template X<TestTraitsType>;

关于c++ - 如何使用模板 extern 关键字分隔测试类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27787903/

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