我不明白这个错误
I dont understand this error
im当前在c 中为班级编写一个阵列包装器,我不知道我得到的错误是什么。
这些是源文件和标题文件
#include "List.h"
#include <cstdlib>
#include <stdexcept>
#include <iostream>
using namespace std;
List::List(int x){
if(x>10){
arrSize=x;
}else{
arrSize=10;
}
array = new int[arrSize];
}
List::List(List& list){
array = new int[list.size()];
arrSize = list.size();
for(int x=0;x<arrSize;x++){
array[x]=list[x];
}
}
List::~List(){
for(int x=0;x<arrSize;x++){
if(array[x]){
delete(&array[x]);
}
}
}
int List::size(){
return arrSize;
}
int& List::operator [](int& index){
if(index>arrSize-1){
throw out_of_range("Array Index Out of Bounds");
}else{
return array[index];
}
}
int& List::operator [](const int& index){
if(index>arrSize-1){
throw out_of_range("Array Index Out of Bounds");
}else{
return array[index];
}
}
List& List::operator +(List& list){
List *retList = new List(list.size()+arrSize);
for(int x=0;x<arrSize;x++){
(*retList)[x]=array[x];
}
for(int x=arrSize;x<list.size()+arrSize;x++){
(*retList)[x]=list[x];
}
return *retList;
}
void List::operator =(List& list){
delete(array);
arrSize=list.size();
array = new int[arrSize];
for(int x=0;x<arrSize;x++){
array[x]=list[x];
}
}
#ifndef LIST_H_
#define LIST_H_
#include <iostream>
using namespace std;
class List{
private:
int arrSize;
int *array;
public:
List(int x=10);
List(List&);
~List();
int size();
void operator=(List&);
List& operator+(List&);
int& operator[](const int&);
int& operator[](int&);
};
void operator << (ostream io,List& list){
io << "{";
for(int x=0;x<list.size()-1;x++){
io << list[x] + ",";
}
io << list[list.size()-1]+"}";
}
#endif /* LIST_H_ */
和主
#include "List.h"
#include <iostream>
using namespace std;
int main(){
List list;
for(int x=0;x<10;x++){
list[x]=x;
}
cout<<list;
return 0;
}
现在这是我遇到的错误,我不明白
In file included from /usr/include/c+
+/4.8/ios:42:0,
from
/usr/include/c++/4.8/ostream:38,
from /usr/include/c++/4.8/iostream:39,
from List.h:10,
from
Main.cpp:8:
/usr/include/c++/4.8/bits/ios_base.h:
In copy constructor
‘std::basic_ios<char>::basic_ios(const
std::basic_ios<char>&)’:
/usr/include/c+
+/4.8/bits/ios_base.h:786:5: error:
‘std::ios_base::ios_base(const std::ios_base&)’
is private
ios_base(const ios_base&);
^
In
file included from /usr/include/c+
+/4.8/ios:44:0,
from
/usr/include/c++/4.8/ostream:38,
from /usr/include/c++/4.8/iostream:39,
from List.h:10,
from
Main.cpp:8:
/usr/include/c+
+/4.8/bits/basic_ios.h:66:11: error: within this
context
class basic_ios : public ios_base
^
In file included from /usr/include/c+
+/4.8/iostream:39:0,
from
List.h:10,
from Main.cpp:8:
/usr/include/c++/4.8/ostream: In copy constructor
‘std::basic_ostream<char>::basic_ostream(const
std::basic_ostream<char>&)’:
/usr/include/c+
+/4.8/ostream:58:11: note: synthesized method
‘std::basic_ios<char>::basic_ios(const
std::basic_ios<char>&)’ first required here
class basic_ostream : virtual public
basic_ios<_CharT, _Traits>
^
Main.cpp:
In function ‘int main()’:
Main.cpp:17:8: note:
synthesized method
‘std::basic_ostream<char>::basic_ostream(const
std::basic_ostream<char>&)’ first required here
cout<<list;
^
In file included from
Main.cpp:8:0:
List.h:29:6: error: initializing
argument 1 of ‘void operator<<(std::ostream,
List&)’
void operator << (ostream io,List& list)
{
^
以下方式写操作员
ostream & operator << ( ostream &io, List& list ){
io << "{";
for(int x=0;x<list.size()-1;x++){
io << list[x] + ",";
}
io << list[list.size()-1]+"}";
return io;
}
类Ostream没有公共复制构造函数。因此,第一个参数必须具有参考类型。
也最好将第二个参数声明为常数参考
ostream & operator << ( ostream &io, const List& list ){
io << "{";
for(int x=0;x<list.size()-1;x++){
io << list[x] + ",";
}
io << list[list.size()-1]+"}";
return io;
}
考虑到列表的大小等于0(该语句
),该操作员有一个错误 io << list[list.size()-1]+"}";
无效。
相关文章:
- std::我不明白的矢量元素错误
- 我不明白尝试使用字符串作为函数参数时遇到的错误
- 我不明白我的错误需要返回一个指针数组
- 我收到"undefined reference"错误,我不明白为什么(C++ OO)
- 无法识别的模板声明错误 - 不明白我做错了什么
- 我不明白错误"隐含声明的定义'Clothing::Clothing()'
- C++ 由于某种原因,我无法让模板在链表中工作,我敢打赌这是一个简单的错误,但我就是不明白
- 我不明白为什么会出现语法错误
- 我不明白我在这个编程代码中得到的错误
- std::make_shared给出了我不明白的错误
- 我不明白为什么我会收到语法错误或如何解决它
- 我不明白这个错误
- 我收到此错误:错误 c2064:term 的计算结果不是采用 0 个参数的函数,但我不明白为什么
- 我不明白的模板方法中的语法错误
- 我有一个我不明白的错误
- 我写了一个游戏,但得到一个我不明白的编译错误
- 不明白为什么我会收到错误消息
- 不明白为什么我的程序会抛出错误
- 不明白这个错误:初始化"类"的参数 1 [使用 T = 无符号 int]' [-允许]
- 不明白为什么我会出现段错误