gpt4 book ai didi

c++ - 语法错误 : missing ',' before '<'

转载 作者:行者123 更新时间:2023-11-28 02:00:50 25 4
gpt4 key购买 nike

很长一段时间后,我才开始用 C++ 编写代码,也许我在这里遗漏了一些语法上明显的东西,但我已经搜索了很长时间,但在任何地方都找不到对我的问题的引用。我正在尝试为 set 创建自定义 C++ 类和 multiset .

这是我的类cset.h

#pragma once
#include <set>
#include "cmultiset.h"

template <class Type>

class Set : public set<Type>
{
private:

public:
void add(Type &);
};

这是我的cmultiset.h

#pragma once
#include <set>

template <class Type>

class MultiSet : public multiset<Type>
{
private:

public:
bool operator < (MultiSet <Type> &);
};

我在这里要做的是创建一个 Set<MultiSet<int>>在我的司机课上。但是在 class Set : public set<Type> 的上述头文件中,每个文件都会出现两次以下错误和 class MultiSet : public multiset<Type> .

syntax error: missing ',' before '<'

我不知道如何解决这个错误。

如果我只使用 set<MultiSet<int>>一切正常:没有错误没有警告(我必须在模板前添加 using namespace std;)。但是当我使用 Set<MultiSet<int>>它给出了错误和using namespace std不起作用。

编辑 1:

错误:

Severity    Code    Description Project File    Line    Suppression State
Error C2143 syntax error: missing ',' before '<' Integer Sets Analyzer c:\users\abbas\documents\mega\personal projects\integer sets analyzer\integer sets analyzer\cmultiset.h 6
Error C2143 syntax error: missing ',' before '<' Integer Sets Analyzer c:\users\abbas\documents\mega\personal projects\integer sets analyzer\integer sets analyzer\cmultiset.h 6
Error C2143 syntax error: missing ',' before '<' Integer Sets Analyzer c:\users\abbas\documents\mega\personal projects\integer sets analyzer\integer sets analyzer\cset.h 7
Error C2143 syntax error: missing ',' before '<' Integer Sets Analyzer c:\users\abbas\documents\mega\personal projects\integer sets analyzer\integer sets analyzer\cmultiset.h 6
Error C2143 syntax error: missing ',' before '<' Integer Sets Analyzer c:\users\abbas\documents\mega\personal projects\integer sets analyzer\integer sets analyzer\cset.h 7

编辑 2:

这是我的ma​​in.cpp

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include "cmultiset.h"
#include "cset.h"

using namespace std;

int main()
{
Set<MultiSet <int>> intSet;

intSet.clear();

_getch();

return 0;
}

这是我的MultiSet.cpp

#pragma once
#include "stdafx.h"
#include "cmultiset.h"

using namespace std;

template <class Type>
bool MultiSet<Type>::operator < (MultiSet<Type> & cmpSet)
{
if (this->size() < cmpSet.size())
{
return true;
}
else if (this->size() > cmpSet.size())
{
return false;
}

for (multiset<Type>::iterator it = this->begin(), jt = cmpSet.begin(); it != this->end(), jt != cmpSet.end(); ++it, ++jt)
{
if (*it < *jt)
return true;
}

return false;
}

这是我的Set.cpp

#pragma once
#include "stdafx.h"
#include "cset.h"

using namespace std;

template <class Type>
void Set<Type> :: add(Type & entry)
{
set<Type>::insert(entry);
}

最佳答案

class Set : public set<Type> ,应该是std::set而不是 set .

否则编译器会给出语法错误,因为它没有意识到 set是一个类模板。

multiset 也有类似的问题在下一部分。

注意。标准容器并不意味着可以继承;考虑改用容器(即将容器作为成员变量)。

关于c++ - 语法错误 : missing ',' before '<' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39675896/

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