可视化解决我列表中的C++类模板错误
visual resolve C++ class template errors on my list
我创建了这个squareList类。当我编译它时,它会给我带来很多错误。我不知道有人能帮我解决这些错误吗更新:我在~square_list(){}之后注释我的所有代码,并将每个错误精确定位到列表数据;
///#include "LinkedList.hpp"
#include <vector>
#include <cassert>
#include <iostream>
#include <iomanip>
#include <math.h>
#include <list>
#include <iterator>
template <typename T_>
class square_list
{
typedef T_ value_type;
typedef std::size_t size_type;
typedef T_ & reference;
typedef T_ const & const_reference;
typedef T_ * pointer;
typedef T_ const * const_pointer;
typedef T_ * iterator;
typedef T_ const * const_iterator;
typedef std::ptrdiff_t difference_type;
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
//for header vector<pair<itr,unsindINT) header
list<T_> data;
square_list() {}
~square_list(){}
// bool empty(){
// if(this->begin() == nullptr && this->end() == nullptr)
// return 1;
// else
// return 0;
//}
//list<value_type>::iterator begin() {
// return data.begin();
//}
//list<value_type>::iterator end() {
// return data.end();
//}
};
错误1错误C2143:语法错误:缺少";"在'<'之前
错误4错误C2143:语法错误:缺少";"在'<'之前
错误7错误C2143:语法错误:缺少";"在'<'之前
错误10错误C2143:语法错误:缺少";"在'<'之前
错误13错误C2143:语法错误:缺少";"在'<'之前
错误16错误C2143:语法错误:缺少";"在'<'之前
错误19错误C2143:语法错误:缺少";"在'<'之前
错误22错误C2143:语法错误:缺少";"在'<'之前
错误25错误C2143:语法错误:缺少";"在'<'之前
错误28错误C2143:语法错误:缺少";"在'<'之前
错误31错误C2143:语法错误:缺少";"在'<'之前
错误34错误C2143:语法错误:缺少";"在'<'之前
错误37错误C2143:语法错误:缺少";"在'<'之前
错误40错误C2143:语法错误:缺少";"在'<'之前
错误43错误C2143:语法错误:缺少";"在'<'之前
错误46错误C2143:语法错误:缺少";"在'<'之前
错误3错误C2238:";"前面有意外的令牌错误6错误C2238:";"前面的意外令牌错误9错误C2238:";"前面的意外标记错误12错误C2238:意外";"前面的令牌错误15错误C2238:意外的令牌在";"之前错误18错误C2238:前面有意外的令牌';'错误21错误C2238:";"前面有意外的令牌
错误24错误C2238:";"前面有意外的令牌
错误27错误C2238:";"前面有意外的令牌
错误30错误C2238:";"前面有意外的令牌
错误33错误C2238:";"前面有意外的令牌
错误36错误C2238:";"前面有意外的令牌
错误39错误C2238:";"前面有意外的令牌
错误42错误C2238:";"前面有意外的令牌
错误45错误C2238:";"前面的意外令牌
错误48错误C2238:";"前面有意外的令牌错误2错误C4430:缺少类型说明符-假定为int。注意:C++没有支持默认int错误5错误C4430:缺少类型说明符-int假设。注意:C++不支持默认int错误8错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认int错误11错误C4430:缺少类型说明符-int假设。注意:C++不支持默认int错误14错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认int错误17错误C4430:缺少类型说明符-int假设。注意:C++不支持默认的int错误20错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认int错误23错误C4430:缺少类型说明符-int假设。注意:C++不支持默认int错误26错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认int错误29错误C4430:缺少类型说明符-int假设。注意:C++不支持默认int错误32错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认int错误35错误C4430:缺少类型说明符-int假设。注意:C++不支持默认int错误38错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认int错误41错误C4430:缺少类型说明符-int假设。注意:C++不支持默认int错误44错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认int错误47错误C4430:缺少类型说明符-int假设。注意:C++不支持默认的int
似乎编译器错误是由私有构造函数引起的,这段代码可以编译,希望它能有所帮助,
#include <vector>
#include <cassert>
#include <iostream>
#include <iomanip>
#include <math.h>
#include <list>
#include <iterator>
using namespace std;
#define nullptr NULL
template <typename T_>
class square_list
{
public:
typedef T_ value_type;
typedef std::size_t size_type;
typedef T_ & reference;
typedef T_ const & const_reference;
typedef T_ * pointer;
typedef T_ const * const_pointer;
typedef T_ * iterator;
typedef T_ const * const_iterator;
typedef std::ptrdiff_t difference_type;
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
//for header vector<pair<itr,unsindINT) header
list<value_type> data;
square_list() {}
~square_list(){}
bool empty(){
if(this->begin() == nullptr && this->end() == nullptr)
return 1;
else
return 0;
}
/*list<T_>::iterator begin() {
return data.begin();
}
list<T_>::iterator end() {
return data.end();
}*/
};
int main()
{
square_list<int> sq_list;
return 0;
}
您的模板参数是T_
,但您指的是未定义的T
。尝试更改
list<T> data<T>;
至
list<T_> data;
另外,尝试注释掉类声明和编译中的所有内容。然后一次取消注释一行,并处理添加每行后出现的任何错误。
第一个问题是这条线
list<T> data<T>;
应该是
list<T> data;
这些模板参数是不必要的,在语法上也是无效的。此外,您还没有定义模板参数T
。你是指T_
(或者更确切地说是value_type
)吗?
此外,在begin()
和end()
方法的返回类型中需要typename
,因为value_type
是一个依赖类型:
typename list<value_type>::iterator begin();
typename list<value_type>::iterator end();
您甚至可以利用退货类型扣除:
auto begin() -> decltype(data.begin());
auto end() -> decltype(data.end());
list<value_type> data;
代码的问题是缺少std::
,如下所示:
std::list<value_type> data;
您还可以在类定义之前编写using namespace std;
。
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'