gpt4 book ai didi

c++ - hpp文件中的 block ,这是c++语法吗?为什么没有传入参数?有人可以解释一下吗?

转载 作者:行者123 更新时间:2023-11-28 04:55:58 32 4
gpt4 key购买 nike

------------.h文件----------------

这是头文件,这个文件没有问题,我能理解这个文件中的所有内容。

template <int ALGO>

class FFTRealUseTrigo

{

public:

typedef FFTRealFixLenParam::DataType DataType; //就因为这个玩意,所以这个类要写成模板类
typedef OscSinCos<DataType> OscType;

FORCEINLINE static void prepare(OscType& osc);
FORCEINLINE static void iterate(OscType& osc,DataType& c,DataType& s,const DataType cos_ptr[],long index_c,long index_s);


private:

FFTRealUseTrigo();
~FFTRealUseTrigo();
FFTRealUseTrigo(const FFTRealUseTrigo& other);
FFTRealUseTrigo& operator=(const FFTRealUseTrigo& other);
bool operator ==(const FFTRealUseTrigo& other);
bool operator !=(const FFTRealUseTrigo& other);
};

------------------------.hpp 文件-------------------- ------------------------

这是hpp文件。问题来了,既然有iterator和prepare的实现,那么这两个没有参数的函数是什么?超车?(似乎不是)

#include "OscSinCos.h"
#include "FFTRealUseTrigo.h"


template <int ALGO> void FFTRealUseTrigo <ALGO>::prepare(OscType& osc)

{

osc.clear_buffers();

}


template <> void FFTRealUseTrigo <0>::prepare(OscType& osc) //What is this?

{

//Nothing

}

template <int ALGO> void FFTRealUseTrigo <ALGO>::iterate(OscType& osc, DataType& c,DataType& s,const DataType cos_ptr[],long index_c,long index_s)

{

osc.step();
c=osc.get_cos();
s=osc.get_sin();

}

**template <> void FFTRealUseTrigo <0>::iterate(OscType& osc,DataType& c,DataType& s,const DataType cos_ptr[],long index_c,long index_s)** //since there is an implementation of iterator,what is this function?

{

c=cos_ptr[index_c];
s=cos_ptr[index_s]; //这个真的没看懂了,上一个是Nothing,这一个还有实现

}

#endif

最佳答案

那是一个 explicit template specialization .基本上,当您实例化一个模板时,如果在使用通用版本之前可用,将使用任何完整的特化。这可以用来优化算法的特殊情况,并且在 template metaprogramming 中也很有用。对于类型特征和模板递归之类的东西。

关于c++ - hpp文件中的 block ,这是c++语法吗?为什么没有传入参数?有人可以解释一下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47128792/

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