解决我的列表中的C ++类模板错误

时间:2014-02-17 01:55:24

标签: c++ visual-c++ boost c++11

我在编译它时创建了这个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:语法错误:缺少';'在'&lt;'之前   错误4错误C2143:语法错误:缺少';'在'&lt;'之前   错误7错误C2143:语法错误:缺少';'在'&lt;'之前   错误10错误C2143:语法错误:缺少';'在'&lt;'之前   错误13错误C2143:语法错误:缺少';'在'&lt;'之前   错误16错误C2143:语法错误:缺少';'在'&lt;'之前   错误19错误C2143:语法错误:缺少';'在'&lt;'之前   错误22错误C2143:语法错误:缺少';'在'&lt;'之前   错误25错误C2143:语法错误:缺少';'在'&lt;'之前   错误28错误C2143:语法错误:缺少';'在'&lt;'之前   错误31错误C2143:语法错误:缺少';'在'&lt;'之前   错误34错误C2143:语法错误:缺少';'在'&lt;'之前   错误37错误C2143:语法错误:缺少';'在'&lt;'之前   错误40错误C2143:语法错误:缺少';'在'&lt;'之前   错误43错误C2143:语法错误:缺少';'在'&lt;'之前   错误46错误C2143:语法错误:缺少';'在'&lt;'之前   错误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 ++没有   support default-int错误5错误C4430:缺少类型说明符 - int   假定。注意:C ++不支持default-int错误8错误C4430:   缺少类型说明符 - 假设为int。注意:C ++不支持   default-int错误11错误C4430:缺少类型说明符 - int   假定。注意:C ++不支持default-int错误14错误C4430:   缺少类型说明符 - 假设为int。注意:C ++不支持   default-int错误17错误C4430:缺少类型说明符 - int   假定。注意:C ++不支持default-int错误20错误C4430:   缺少类型说明符 - 假设为int。注意:C ++不支持   default-int错误23错误C4430:缺少类型说明符 - int   假定。注意:C ++不支持default-int错误26错误C4430:   缺少类型说明符 - 假设为int。注意:C ++不支持   default-int错误29错误C4430:缺少类型说明符 - int   假定。注意:C ++不支持default-int错误32错误C4430:   缺少类型说明符 - 假设为int。注意:C ++不支持   default-int错误35错误C4430:缺少类型说明符 - int   假定。注意:C ++不支持default-int错误38错误C4430:   缺少类型说明符 - 假设为int。注意:C ++不支持   default-int错误41错误C4430:缺少类型说明符 - int   假定。注意:C ++不支持default-int错误44错误C4430:   缺少类型说明符 - 假设为int。注意:C ++不支持   default-int错误47错误C4430:缺少类型说明符 - int   假定。注意:C ++不支持default-int

4 个答案:

答案 0 :(得分:1)

似乎编译错误是由私有construtor引起的,这段代码可以编译,希望它会有所帮助,

#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;
}

答案 1 :(得分:0)

第一个问题是这一行

list<T> data<T>;

应该是

list<T> data;

这些模板参数是不必要的,语法上无效。此外,您尚未定义模板参数T。您的意思是T_(或value_type更确切地说)吗?

此外,typenamebegin()方法的返回类型需要end(),因为value_type是从属类型:

typename list<value_type>::iterator  begin();
typename list<value_type>::iterator  end();

您甚至可以利用退货类型扣除:

auto begin() -> decltype(data.begin());
auto end()   -> decltype(data.end());

答案 2 :(得分:0)

您的模板参数是T_,但您指的是未定义的名为T的内容。尝试更改

list<T> data<T>;

list<T_> data;

另外,尝试在类声明和编译中注释掉所有内容。然后一次取消注释一行,并处理添加每一行后出现的任何错误。

答案 3 :(得分:0)

list<value_type> data;

代码的问题是缺少std::如下:

std::list<value_type> data;

您还要在课程定义之前编写using namespace std;