C++ 操作员过载>&燃气轮机;cin
我需要重载>操作符,但我没有看到任何错误。 当我超载时,仅操作员>(istream&stream,vehicle&v); friend ostream&operator(istream&stream、vehicle&v) { 流>>v.number; 流>>年; 流>>v.成本; 流>>v.make; 流>>v.model; 流>>v.bodyStyle; 流>>v.color; 回流; }C++ 操作员过载>&燃气轮机;cin,c++,class,inheritance,operator-overloading,C++,Class,Inheritance,Operator Overloading,我需要重载>操作符,但我没有看到任何错误。 当我超载时,仅操作员>(istream&stream,vehicle&v); friend ostream&operator(istream&stream、vehicle&v) { 流>>v.number; 流>>年; 流>>v.成本; 流>>v.make; 流>>v.model; 流>>v.bodyStyle; 流>>v.color; 回流; } ostream&operator您好,您可能想学习这段代码,它在使用GCC HEAD 8编译器时编译时没
ostream&operator您好,您可能想学习这段代码,它在使用GCC HEAD 8编译器时编译时没有错误和警告。我会及时回答关于我的代码的任何问题 你好,米莎
#include <iostream>
// Don't use <blah.h>, prefer using <cblah>.
#include <cstring>
#include <cassert>
// extra includes.
#include <string>
#include <sstream>
using namespace std;
class vehicle
{
friend ostream& operator<< (ostream& stream, vehicle const& v);
friend istream& operator>> (istream& stream, vehicle& v);
protected:
int number, year, cost;
char *make, *model, *bodyStyle, *color;
public:
vehicle(int = 0,
int = 0,
char const* = "-", // Don't choose NULL here - prevents segmentation fault in main!
char const* = "-",
char const* = "-",
char const* = "-",
int = 0);
~vehicle();
};
vehicle::vehicle(int a,
int b,
char const* ma1,
char const* mod1,
char const* bs1,
char const* c1,
int cos)
{
number = a;
year = b;
make = new char[strlen(ma1) + 1];
assert(make);
strcpy(make, ma1);
model = new char[strlen(mod1) + 1];
assert(model);
strcpy(model, mod1);
bodyStyle = new char[strlen(bs1) + 1];
assert(bodyStyle);
strcpy(bodyStyle, bs1);
color = new char[strlen(c1) + 1];
assert(color);
strcpy(color, c1);
cost = cos;
}
vehicle::~vehicle()
{
if (make) delete[] make;
if (model) delete[] model;
if (bodyStyle) delete[] bodyStyle;
if (color) delete[] color;
}
ostream& operator<< (ostream& stream, vehicle const& v)
{
stream << v.number << endl;
stream << v.year << endl;
stream << v.cost << endl;
stream << v.make << endl;
stream << v.model << endl;
stream << v.bodyStyle << endl;
stream << v.color << endl;
return stream;
}
istream& operator>> (istream& stream, vehicle& v)
{
stream >> v.number;
stream >> v.year;
stream >> v.cost;
stream >> v.make;
stream >> v.model;
stream >> v.bodyStyle;
stream >> v.color;
return stream;
}
class Truckvehicle : public vehicle
{
friend ostream& operator<< (ostream& stream, Truckvehicle const& tv);
friend istream& operator>> (istream& stream, Truckvehicle& tv);
int passengers, mileage, grossWeight, tempGross;
char *poweredBy;
public:
Truckvehicle(int = 0,
int = 0,
char const* = "-",
char const* = "-",
char const* = "-",
char const* = "-",
int = 0,
int = 0,
int = 0,
int = 0,
char const* = "-",
int = 0);
~Truckvehicle();
};
Truckvehicle::Truckvehicle(int a,
int b,
char const* ma1,
char const* mod1,
char const* bs1,
char const* c1,
int cos,
int pass1,
int mil,
int gross,
char const* pb,
int tg)
:
vehicle(a, b, ma1, mod1, bs1, c1, cos)
{
passengers = pass1;
mileage = mil;
grossWeight = gross;
poweredBy = new char[strlen(pb) + 1];
assert(poweredBy);
strcpy(poweredBy, pb);
tempGross = tg;
}
Truckvehicle::~Truckvehicle()
{
delete[] poweredBy;
}
ostream& operator<< (ostream& stream, Truckvehicle const& tv)
{
// vehicle part.
stream <<tv.number <<endl;
stream <<tv.year <<endl;
stream <<tv.make <<endl;
stream <<tv.model <<endl;
stream <<tv.bodyStyle <<endl;
stream <<tv.color <<endl;
stream <<tv.cost <<endl;
// extra truck part.
stream <<tv.passengers <<endl;
stream <<tv.mileage <<endl;
stream <<tv.grossWeight <<endl;
stream <<tv.poweredBy <<endl;
stream <<tv.tempGross <<endl;
return stream;
}
istream& operator>> (istream& stream, Truckvehicle& tv)
{
// vehicle part.
stream >>tv.number;
stream >>tv.year;
stream >>tv.make;
stream >>tv.model;
stream >>tv.bodyStyle;
stream >>tv.color;
stream >>tv.cost;
// extra truck part.
stream >>tv.passengers;
stream >>tv.mileage;
stream >>tv.grossWeight;
stream >>tv.poweredBy;
stream >>tv.tempGross;
return stream;
}
// Simulates usage of std::operator>> ().
void initializeTruckvehicle(Truckvehicle& TV,
int a,
int b,
char const* ma1,
char const* mod1,
char const* bs1,
char const* c1,
int cos,
int pass1,
int mil,
int gross,
char const* pb,
int tg)
{
string s;
s += static_cast <ostringstream *> (&( ostringstream() << a )) -> str();
s += " ";
s += static_cast <ostringstream *> (&( ostringstream() << b )) -> str();
s += " ";
s += ma1;
s += " ";
s += mod1;
s += " ";
s += bs1;
s += " ";
s += c1;
s += " ";
s += static_cast <ostringstream *> (&( ostringstream() << cos )) -> str();
s += " ";
s += static_cast <ostringstream *> (&( ostringstream() << pass1 )) -> str();
s += " ";
s += static_cast <ostringstream *> (&( ostringstream() << mil )) -> str();
s += " ";
s += static_cast <ostringstream *> (&( ostringstream() << gross )) -> str();
s += " ";
s += pb;
s += " ";
s += static_cast <ostringstream *> (&( ostringstream() << tg )) -> str();
s += " ";
istringstream in(s);
in >> TV;
}
int main()
{
cout << "Truck 1>" << endl;
Truckvehicle TV1 (111111,
2014,
"Toyota",
"Tacoma",
"4X4",
"Black",
25000,
2,
15000,
333333,
"Gas",
222222);
cout << TV1;
cout << "Truck 2>" << endl;
Truckvehicle TV2;
cout << TV2;
cout << "Truck 3>" << endl;
Truckvehicle TV3;
initializeTruckvehicle (TV3,
111111,
2014,
"Toyota",
"Tacoma",
"4X4",
"Black",
25000,
2,
15000,
333333,
"Gas",
222222);
cout << TV3;
}
#包括
//不要使用,更喜欢使用。
#包括
#包括
//额外费用包括在内。
#包括
#包括
使用名称空间std;
等级车辆
{
friend ostream&operator>(istream&stream、vehicle&v);
受保护的:
整数、年份、成本;
字符*品牌,*型号,*车身风格,*颜色;
公众:
车辆(int=0,
int=0,
char const*=“-”,//此处不要选择NULL-防止main中出现分段错误!
字符常量*=“-”,
字符常量*=“-”,
字符常量*=“-”,
int=0);
~vehicle();
};
车辆:车辆(int a,
int b,
字符常量*ma1,
字符常量*mod1,
字符常量*bs1,
字符常量*c1,
int cos)
{
数字=a;
年份=b;
make=新字符[strlen(ma1)+1];
断言(制造);
strcpy(make,ma1);
模型=新字符[strlen(mod1)+1];
断言(模型);
strcpy(模型,mod1);
bodyStyle=新字符[strlen(bs1)+1];
断言(车身风格);
strcpy(车身样式,bs1);
颜色=新字符[strlen(c1)+1];
断言(颜色);
strcpy(彩色,c1);
成本=成本;
}
车辆::~vehicle()
{
如果(make)删除[]make;
如果(模型)删除[]模型;
如果(bodyStyle)删除[]bodyStyle;
如果(颜色)删除[]颜色;
}
ostream和operator>v.color;
回流;
}
货车类别:公共车辆
{
friend ostream&operator>(istream&stream、卡车与电视);
int乘客、里程、总里程、总里程、总里程;
char*poweredBy;
公众:
货车(整数=0,
int=0,
字符常量*=“-”,
字符常量*=“-”,
字符常量*=“-”,
字符常量*=“-”,
int=0,
int=0,
int=0,
int=0,
字符常量*=“-”,
int=0);
~Truckvehicle();
};
货车,
int b,
字符常量*ma1,
字符常量*mod1,
字符常量*bs1,
字符常量*c1,
int cos,
int pass1,
整数mil,
总整数,
字符常量*pb,
整数(tg)
:
车辆(a、b、ma1、mod1、bs1、c1、cos)
{
乘客=pass1;
里程=mil;
总重量=总重量;
poweredBy=newchar[strlen(pb)+1];
断言(poweredBy);
strcpy(poweredBy,pb);
tempGross=tg;
}
卡车司机::~Truckvehicle()
{
删除[]poweredBy;
}
ostream和操作员“弹出”?当使用std::cin
时,您只需在控制台中键入。它只是给了我。cpp停止工作错误看在上帝的份上,请使用std::string。您知道如何使用调试器吗?不幸的是,您的操作符>
函数将尝试写入char*
参数,无论其当前大小如何,这可能是个坏消息。这就是为什么我们有std::string
。
#include <iostream>
// Don't use <blah.h>, prefer using <cblah>.
#include <cstring>
#include <cassert>
// extra includes.
#include <string>
#include <sstream>
using namespace std;
class vehicle
{
friend ostream& operator<< (ostream& stream, vehicle const& v);
friend istream& operator>> (istream& stream, vehicle& v);
protected:
int number, year, cost;
char *make, *model, *bodyStyle, *color;
public:
vehicle(int = 0,
int = 0,
char const* = "-", // Don't choose NULL here - prevents segmentation fault in main!
char const* = "-",
char const* = "-",
char const* = "-",
int = 0);
~vehicle();
};
vehicle::vehicle(int a,
int b,
char const* ma1,
char const* mod1,
char const* bs1,
char const* c1,
int cos)
{
number = a;
year = b;
make = new char[strlen(ma1) + 1];
assert(make);
strcpy(make, ma1);
model = new char[strlen(mod1) + 1];
assert(model);
strcpy(model, mod1);
bodyStyle = new char[strlen(bs1) + 1];
assert(bodyStyle);
strcpy(bodyStyle, bs1);
color = new char[strlen(c1) + 1];
assert(color);
strcpy(color, c1);
cost = cos;
}
vehicle::~vehicle()
{
if (make) delete[] make;
if (model) delete[] model;
if (bodyStyle) delete[] bodyStyle;
if (color) delete[] color;
}
ostream& operator<< (ostream& stream, vehicle const& v)
{
stream << v.number << endl;
stream << v.year << endl;
stream << v.cost << endl;
stream << v.make << endl;
stream << v.model << endl;
stream << v.bodyStyle << endl;
stream << v.color << endl;
return stream;
}
istream& operator>> (istream& stream, vehicle& v)
{
stream >> v.number;
stream >> v.year;
stream >> v.cost;
stream >> v.make;
stream >> v.model;
stream >> v.bodyStyle;
stream >> v.color;
return stream;
}
class Truckvehicle : public vehicle
{
friend ostream& operator<< (ostream& stream, Truckvehicle const& tv);
friend istream& operator>> (istream& stream, Truckvehicle& tv);
int passengers, mileage, grossWeight, tempGross;
char *poweredBy;
public:
Truckvehicle(int = 0,
int = 0,
char const* = "-",
char const* = "-",
char const* = "-",
char const* = "-",
int = 0,
int = 0,
int = 0,
int = 0,
char const* = "-",
int = 0);
~Truckvehicle();
};
Truckvehicle::Truckvehicle(int a,
int b,
char const* ma1,
char const* mod1,
char const* bs1,
char const* c1,
int cos,
int pass1,
int mil,
int gross,
char const* pb,
int tg)
:
vehicle(a, b, ma1, mod1, bs1, c1, cos)
{
passengers = pass1;
mileage = mil;
grossWeight = gross;
poweredBy = new char[strlen(pb) + 1];
assert(poweredBy);
strcpy(poweredBy, pb);
tempGross = tg;
}
Truckvehicle::~Truckvehicle()
{
delete[] poweredBy;
}
ostream& operator<< (ostream& stream, Truckvehicle const& tv)
{
// vehicle part.
stream <<tv.number <<endl;
stream <<tv.year <<endl;
stream <<tv.make <<endl;
stream <<tv.model <<endl;
stream <<tv.bodyStyle <<endl;
stream <<tv.color <<endl;
stream <<tv.cost <<endl;
// extra truck part.
stream <<tv.passengers <<endl;
stream <<tv.mileage <<endl;
stream <<tv.grossWeight <<endl;
stream <<tv.poweredBy <<endl;
stream <<tv.tempGross <<endl;
return stream;
}
istream& operator>> (istream& stream, Truckvehicle& tv)
{
// vehicle part.
stream >>tv.number;
stream >>tv.year;
stream >>tv.make;
stream >>tv.model;
stream >>tv.bodyStyle;
stream >>tv.color;
stream >>tv.cost;
// extra truck part.
stream >>tv.passengers;
stream >>tv.mileage;
stream >>tv.grossWeight;
stream >>tv.poweredBy;
stream >>tv.tempGross;
return stream;
}
// Simulates usage of std::operator>> ().
void initializeTruckvehicle(Truckvehicle& TV,
int a,
int b,
char const* ma1,
char const* mod1,
char const* bs1,
char const* c1,
int cos,
int pass1,
int mil,
int gross,
char const* pb,
int tg)
{
string s;
s += static_cast <ostringstream *> (&( ostringstream() << a )) -> str();
s += " ";
s += static_cast <ostringstream *> (&( ostringstream() << b )) -> str();
s += " ";
s += ma1;
s += " ";
s += mod1;
s += " ";
s += bs1;
s += " ";
s += c1;
s += " ";
s += static_cast <ostringstream *> (&( ostringstream() << cos )) -> str();
s += " ";
s += static_cast <ostringstream *> (&( ostringstream() << pass1 )) -> str();
s += " ";
s += static_cast <ostringstream *> (&( ostringstream() << mil )) -> str();
s += " ";
s += static_cast <ostringstream *> (&( ostringstream() << gross )) -> str();
s += " ";
s += pb;
s += " ";
s += static_cast <ostringstream *> (&( ostringstream() << tg )) -> str();
s += " ";
istringstream in(s);
in >> TV;
}
int main()
{
cout << "Truck 1>" << endl;
Truckvehicle TV1 (111111,
2014,
"Toyota",
"Tacoma",
"4X4",
"Black",
25000,
2,
15000,
333333,
"Gas",
222222);
cout << TV1;
cout << "Truck 2>" << endl;
Truckvehicle TV2;
cout << TV2;
cout << "Truck 3>" << endl;
Truckvehicle TV3;
initializeTruckvehicle (TV3,
111111,
2014,
"Toyota",
"Tacoma",
"4X4",
"Black",
25000,
2,
15000,
333333,
"Gas",
222222);
cout << TV3;
}