gpt4 book ai didi

C++非整数模板Const初始化预期在ClassName之前的init-declarator

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:03 25 4
gpt4 key购买 nike

我正在尝试初始化一个非整型模板常量。

请在下面找到代码:

#ifndef _EXETENDED_CLASS_H
#define _EXETENDED_CLASS_H


template<class T>
class BaseClass
{
public:
BaseClass();
~BaseClass();


};

template <class T>
BaseClass<T>::BaseClass()
{}

template <class T>
BaseClass<T>::~BaseClass()
{}



template<class T>
class ExtendedClass:public BaseClass<T>
{
public:
typedef ExtendedClass<T>* position;
static const position NULLPOSITION;

ExtendedClass();
~ExtendedClass();


private:

position _successivo;
};


template<class T>
const ExtendedClass<T>::position ExtendedClass<T>::NULLPOSITION = 0;

template <class T>
ExtendedClass<T>::ExtendedClass()
{}

template <class T>
ExtendedClass<T>::~ExtendedClass()
{}

#endif

问题出在线条上

template<class T>
const ExtendedClass<T>::position ExtendedClass<T>::NULLPOSITION = 0;

我无法初始化内联常量,因为它是非整数类型。

根据我在网上阅读的内容,如果我将 const 初始化移动到 .cpp 文件中,问题就会消失。但是我不能这样做,因为我正在处理模板化类。我收到如下详述的错误:

ExtendedClass.h:43: error: expected init-declarator before "ExtendedClass"
ExtendedClass.h:43: error: expected `;' before "ExtendedClass"
make: *** [ExtendedClass.o] Error 1

有人可以帮我看看吗?非常感谢您的宝贵时间。

最佳答案

你写了两次类型,没有限定标识符。难怪可怜的编译器会感到困惑。

template<class T>
const ExtendedClass<T>::position ExtendedClass<T>::NULLPOSITION = 0;

关于C++非整数模板Const初始化预期在ClassName之前的init-declarator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13744823/

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