gpt4 book ai didi

C++ 在 { 标记之前期望类名,继承错误

转载 作者:行者123 更新时间:2023-11-28 04:53:37 25 4
gpt4 key购买 nike

KSetBase.h 基类,一个接口(interface)

#ifndef HW6_GTUSETBASE_H
#define HW6_GTUSETBASE_H

class KSet;

#include <cstddef>
namespace TU {
template<typename T>
class KSetBase {
public:
virtual bool empty() const = 0;

virtual size_t size() const = 0; //int is not okay since unsigned also could be in.
//comparisons would be not working if that was case
//detailed
//https://stackoverflow.com/questions/1181079/stringsize-type-instead-of-int

virtual size_t max_size() const = 0;

virtual void insert(T first, T second) = 0; //cift dondurmesi gerekli
virtual void erase(T deleter) = 0;

virtual void clear() = 0;

virtual T find(T deneme) = 0;

virtual size_t count(T testle) = 0;

virtual T begin() = 0;

virtual T end() = 0;

protected:
~GTUSetBase() {
//do nothing
}

};
}

#endif //HW6_GTUSETBASE_H

KSet.h(派生类)

#include "KSetBase.h"
#ifndef HW6_GTUSET_H
#define HW6_GTUSET_H


#include <memory>

using namespace std;
namespace TU {

template<typename T>
class KSet : public KSetBase {
public:
bool empty() const;

size_t size() const;

size_t max_size() const;

void insert(T first);

void erase(T deleter);

void clear();

T find(T deneme);

size_t count(T testle);

T begin();

T end();

protected:
int hmany = 0;
shared_ptr<T> set_harmony;


};

}

#endif //HW6_GTUSET_H

我无法弄清楚我的代码的哪一部分是错误的。我基本上继承了接口(interface)类,我在 KSet.cpp 中实现了所有功能。理论上没有任何问题,但它给出了 2 个错误。

在 main.cpp 和 KSet.cpp 中

类 KSet : public KSetBase {错误行是这样的。

我检查了#ifndef 和#defines,我考虑过使用前向声明,但我似乎无法解决这个问题。我真的被这个问题困住了。我搜索了整个网络,最后总是在语法或可见的东西上有很大的错误,但我无法弄清楚我的。这是非常简短的代码。

最佳答案

KSetBase 是一个模板类,如果你从它继承你必须指定一个模板参数:

template<typename T>
class KSet : public KSetBase<T>

此外,您似乎在基类析构函数中输入错误。

关于C++ 在 { 标记之前期望类名,继承错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47653800/

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