我只是编写一个代码来获取一个可以访问的列表,代码就在这里。
Select col1, col2, sum(col3) sumval, count(col4) countval
into #Table
From Table
Group by col1,col2
select CAST('Concat ( col1,col2, "sum")' AS VARCHAR(50)) Key, sumval
from #Table
UNION ALL
select CAST('Concat (col1,col2, " count")' AS VARCHAR(50)), countval
from #Table
和.cpp在这里:
MyList.h
#ifndef MYLIST_H
#define MYLIST_H
#include <list>
#include <initializer_list>
using namespace std;
template<class T>
class MyList:public list<T>
{
private:
T result;
public:
MyList();
MyList(initializer_list<T> li);
T operator [](int i);
};
#endif // MYLIST_H
但是当我用它进行测试时,它有些不对劲。有关它的错误信息在这里:
那么为什么会出错呢?我怎么能解决这个问题呢?提前谢谢。
答案 0 :(得分:2)
您必须在构造函数的mem-initializers中指定list<T>
。例如
template<class T>
MyList<T>::MyList():list<T>()
{
}
template<class T>
MyList<T>::MyList(initializer_list<T> li):list<T>(li){
}
虽然第一个构造函数可以写得更简单
template<class T>
MyList<T>::MyList()
{
}
或者它可以在类定义中定义,如
MyList() = default;
答案 1 :(得分:1)
您必须在.h文件中定义构造函数:
MyList<T>::MyList() {};
和
MyList<T>::MyList(initializer_list<T> li):List<T>(Li) {};