gpt4 book ai didi

c++ - 类名没有命名模板继承的类型问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:06:54 26 4
gpt4 key购买 nike

<分区>

纯虚拟类,AbstractThing.hpp:

#ifdef ABSTRACT_INTERFACE_FOR_THING
#define ABSTRACT_INTERFACE_FOR_THING

namespace A
{
namespace B
{

template <class T>
class AbstractThing
{
public:
virtual ~AbstractThing() = 0;
virtual T GetStatus() = 0;
};

}
}
#endif

头文件,Thing.hpp:

#ifdef _THING_H
#define _THING_H

#include "AbstractThing.hpp"
namespace A
{
namespace B
{
template <class T>
class Thing : public AbstractThing<T> {
public:
Thing();
~Thing();
T GetStatus();
};

}
}

#endif

源文件,Thing.cpp,

#include "Thing.hpp"

namespace A
{
namespace B
{
template <class T>
Thing<T>::Thing() {}

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

template <class T>
T Thing<T>::GetStatus() { ... }
}
}

我一直遇到这个问题,编译器提示类名 (Thing) 不是类型。但是,它是在头文件中声明的。从阅读其他帖子来看,这个问题似乎通常是由于未能预先声明函数或类引起的。但是,我不明白为什么我的代码没有完成这个。我认为这可能是命名空间问题,因为如果我删除命名空间访问 (Thing::),GetStatus() 将编译,但删除命名空间没有帮助。

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