Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ &引用;“从这里开始需要”;声明列表列表时出错_C++_Templates_Constructor_Declaration - Fatal编程技术网

C++ &引用;“从这里开始需要”;声明列表列表时出错

C++ &引用;“从这里开始需要”;声明列表列表时出错,c++,templates,constructor,declaration,C++,Templates,Constructor,Declaration,我试图以这种方式声明列表列表: List_vector<List_vector<int> > multilist; List\u向量多重列表; 但Eclipse强调了上述声明,并给出了以下错误: 从这里开始需要 部分列表_向量实现: template<class T> class List_vector: public Linear_list<T, int> { public: typedef typename Linear_list<

我试图以这种方式声明列表列表:

List_vector<List_vector<int> > multilist;
List\u向量多重列表;
但Eclipse强调了上述声明,并给出了以下错误:

从这里开始需要

部分列表_向量实现:

template<class T>
class List_vector: public Linear_list<T, int> {
public:
  typedef typename Linear_list<T, int>::value_type value_type;
  typedef typename Linear_list<T, int>::position position;

  List_vector();
  List_vector(int);
  List_vector(const List_vector<T>&);
  ~List_vector();
private:
    void change_dimension_(T*&, int, int);
    value_type* elements_;
    int length_; // the length of the list
    int array_dimension_; // array's dimension
};
模板
类列表\向量:公共线性\列表{
公众:
typedef typename线性_列表::值_类型值_类型;
typedef typename线性_列表::位置;
列表_向量();
列表向量(int);
列表向量(常量列表向量&);
~List_vector();
私人:
空隙变化尺寸(T*&,int,int);
值类型*元素;
int length;//列表的长度
int-array\u-dimension;//数组的维度
};
编译器输出:

g++ -O3 -Wall -c -fmessage-length=0 -o multilista.o "..\\multilista.cpp" 
In file included from ..\multilista.cpp:1:0:
..\list_vector.h: In instantiation of 'List_vector<T>::~List_vector() [with T = List_vector<int>]':
..\multilista.cpp:16:32: required from here
..\list_vector.h:78:5: warning: deleting object of polymorphic class type List_vector<int>' which has non-virtual destructor might cause undefined behaviour [-Wdelete-non-virtual-dtor]
..\list_vector.h: In member function 'List_vector<T>::value_type List_vector<T>::read(List_vector<T>::position) const [with T = int; List_vector<T>::value_type = int; List_vector<T>::position = int]':
..\list_vector.h:136:1: warning: control reaches end of non-void function [-Wreturn-type]
..\list_vector.h: In member function 'List_vector<T>::value_type List_vector<T>::read(List_vector<T>::position) const [with T = List_vector<int>; List_vector<T>::value_type = List_vector<int>; List_vector<T>::position = int]':
..\list_vector.h:136:1: warning: control reaches end of non-void function [-Wreturn-type]
g++ -O3 -Wall -c -fmessage-length=0 -o tester.o "..\\tester.cpp" 
g++ -o Lista.exe tester.o multilista.o 
g++-O3-Wall-c-fmessage length=0-o multilista.o.。\\multilista.cpp”
在..\multilista.cpp:1:0中包含的文件中:
..\list_vector.h:在“list_vector::~list_vector()[with T=list_vector]”的实例化中:
..\multilista.cpp:16:32:此处为必填项
..\list_vector.h:78:5:警告:删除具有非虚拟析构函数的多态类类型list_vector'的对象可能会导致未定义的行为[-Wdelete非虚拟dtor]
..\list_vector.h:在成员函数'list_vector::value_type list_vector::read(list_vector::position)const[with T=int;list_vector::value_type=int;list_vector::position=int]:
..\list_vector.h:136:1:警告:控件到达非无效函数的末尾[-Wreturn type]
..\list_vector.h:在成员函数“list_vector::value_type list_vector::read(list_vector::position)const[带T=list_vector;list_vector::value_type=list_vector;list_vector::position=int]:
..\list_vector.h:136:1:警告:控件到达非无效函数的末尾[-Wreturn type]
g++-O3-Wall-c-fmessage length=0-o tester.o.“.\\tester.cpp”
g++-o Lista.exe tester.o multilista.o
您尚未粘贴
List\u vector::read
的代码,但它似乎做错了什么:函数外的每个路径都应该返回一个
List\u vector::value\u type
(除非它引发异常),但您让控制到达终点而不执行任何操作

..\list_vector.h: In member function 'List_vector<T>::value_type List_vector<T>::read(List_vector<T>::position) const [with T = List_vector<int>; List_vector<T>::value_type = List_vector<int>; List_vector<T>::position = int]':
..\list_vector.h:136:1: warning: control reaches end of non-void function [-Wreturn-type]
。\list\u vector.h:在成员函数'list\u vector::value\u type list\u vector::read(list\u vector::position)const[with T=list\u vector;list\u vector::value\u type=list\u vector;list\u vector::position=int]:
..\list_vector.h:136:1:警告:控件到达非无效函数的末尾[-Wreturn type]

告诉我们Eclipse给出的完整错误,这还不足以知道是什么错误。是否包含列表向量头文件?这是全部错误,是的,包含了头文件。Eclipse只打印一行?查看控制台选项卡,您将找到错误的完整跟踪只有警告,没有错误,对吗?它们非常清楚:您使用类继承,但析构函数不是虚拟的,并且您有一个函数应该返回一个值,但不返回。“从这里需要”不是一个错误。它告诉您有关为什么需要实例化的其他信息。真正的错误(或警告)在后面的几行中。请更新您的问题以反映实际错误。线性列表类没有构造函数/析构函数。第二次警告正常(if内返回)。if内返回不是问题。但是,如果< <代码> >,你不能只从代码里面返回,因为如果使用<代码>其他代码>代码,会发生什么?使用不同的编译器(带有DEV C++的明文32解决了这个问题)
..\list_vector.h: In member function 'List_vector<T>::value_type List_vector<T>::read(List_vector<T>::position) const [with T = int; List_vector<T>::value_type = int; List_vector<T>::position = int]':
..\list_vector.h:136:1: warning: control reaches end of non-void function [-Wreturn-type]
..\list_vector.h: In member function 'List_vector<T>::value_type List_vector<T>::read(List_vector<T>::position) const [with T = List_vector<int>; List_vector<T>::value_type = List_vector<int>; List_vector<T>::position = int]':
..\list_vector.h:136:1: warning: control reaches end of non-void function [-Wreturn-type]