C++ 错误:应为类型

C++ 错误:应为类型,c++,C++,我正在尝试使用一个开源类,其.h文件以以下内容开头: template <class DT> class FFTReal { public: enum { MAX_BIT_DEPTH = 30 }; typedef DT DataType; explicit FFTReal (long length); ... 在最后一行中,我得到了错误“error:expected a type”。 我已经搜索了一些错误,但似乎没有任何东西与我

我正在尝试使用一个开源类,其.h文件以以下内容开头:

template <class DT>
class FFTReal
{
public:
enum {          MAX_BIT_DEPTH   = 30    };
typedef DT  DataType;
explicit            FFTReal (long length);
...
在最后一行中,我得到了错误“error:expected a type”。 我已经搜索了一些错误,但似乎没有任何东西与我的特定问题相匹配


谢谢

这大概是因为
fft\u对象
不是一种类型。你可能是这个意思:

m_fft_object = new ffft::FFTReal<double>(static_cast<long>(FFTWindowSize));
m_fft_object=new ffft::FFTReal(静态_cast(FFTWindowSize));
我还为你纠正了C风格的演员阵容


如注释中所述,除非有很好的理由,否则应避免使用原始指针存储对象数据。考虑使用一个智能指针(<代码> STD::UnQuyJPPT),如果数据可以是空的,否则您可以简单地将对象实例存储为一个值(<代码> FFT::FFTRAL</代码>)。这两个选项都不太可能导致内存泄漏,而在使用
new
和原始指针时,必须非常小心地删除分配的对象。

这大概是因为
fft\u对象
不是一种类型。你可能是这个意思:

m_fft_object = new ffft::FFTReal<double>(static_cast<long>(FFTWindowSize));
m_fft_object=new ffft::FFTReal(静态_cast(FFTWindowSize));
我还为你纠正了C风格的演员阵容


如注释中所述,除非有很好的理由,否则应避免使用原始指针存储对象数据。考虑使用一个智能指针(<代码> STD::UnQuyJPPT),如果数据可以是空的,否则您可以简单地将对象实例存储为一个值(<代码> FFT::FFTRAL</代码>)。任何一种选择都不太可能导致内存泄漏,而在使用
new
和原始指针时,您必须非常小心地删除已分配的对象。

我怀疑人们是否打算使用
操作符new
,而不是初始化智能指针。@EduardoLeón同意,智能指针会更好。或者,如果变量永远不需要处于未设置状态,那么使用值(
ffft::FFTReal
)而不是指针(
ffft::FFTReal*
)将比使用@cdhowie更好。它解决了我的问题。关于您关于避免使用指向对象的原始指针的评论。在我的实现中,我为一个库类创建了一个包装函数,这是我认为唯一可以做到的方法,即在我的私有部分中创建一个指向库类的指针,并添加一些初始化(在本例中是分配)和使用该函数的函数。你能提出一个更好的方法来组织这样的代码吗?thanks@user1832746没有看到您的示例代码,没有。但是如果您使用对象的原始实例(没有
*
),那么您可以使用
&
操作符获取指向它的指针。我怀疑除了初始化智能指针之外,人们是否打算使用
操作符new
。@EduardoLeón同意,智能指针会更好。或者,如果变量永远不需要处于未设置状态,那么使用值(
ffft::FFTReal
)而不是指针(
ffft::FFTReal*
)将比使用@cdhowie更好。它解决了我的问题。关于您关于避免使用指向对象的原始指针的评论。在我的实现中,我为一个库类创建了一个包装函数,这是我认为唯一可以做到的方法,即在我的私有部分中创建一个指向库类的指针,并添加一些初始化(在本例中是分配)和使用该函数的函数。你能提出一个更好的方法来组织这样的代码吗?thanks@user1832746没有看到示例代码,没有。但是如果使用对象的原始实例(没有
*
),则可以使用
&
运算符获取指向该对象的指针。
m_fft_object = new ffft::FFTReal<double>(static_cast<long>(FFTWindowSize));