从文件读取C++多态性项目
我正在为学校的多态性项目工作,该项目有一个基础类乐器和两个衍生类弦和黄铜。主要来说,我们需要创建一个基类指针数组,然后从文件中读取数据,并根据对象是黄铜还是字符串,使用指针创建一个新对象。然后我们需要使用虚拟显示函数来输出结果。我的问题是我的输出只是重复文件中的第二项,并且只从第一项中获取成本等 正在读取的文件的内容从文件读取C++多态性项目,c++,C++,我正在为学校的多态性项目工作,该项目有一个基础类乐器和两个衍生类弦和黄铜。主要来说,我们需要创建一个基类指针数组,然后从文件中读取数据,并根据对象是黄铜还是字符串,使用指针创建一个新对象。然后我们需要使用虚拟显示函数来输出结果。我的问题是我的输出只是重复文件中的第二项,并且只从第一项中获取成本等 正在读取的文件的内容 S Messiah Stradivarius 18000000 1 4 S The Titanic Violin 1700000 1 2 S The Lady Tennant 20
S
Messiah Stradivarius
18000000
1
4
S
The Titanic Violin
1700000
1
2
S
The Lady Tennant
2032000
1
4
S
The Hammer Stradivarius
3544000
1
4
B
French horm
8500
valves
brass
S
Eric Clapton's Blackie
959500
0
6
S
Jimmy Page's double-neck Gibson EDS-1275
1245600
0
12
S
Willie Nelson's Lucille
30
0
6
I
Bass drum
239
B
Trumpet
1200
valves
brass
I
Saxophone
3800
I
Piccolo
149
S
Jimi Hendrix's First Wife
1250000
0
6
客户端文件
const int MAX = 15;
int main()
{
int i = 0;
string inType;
string inName;
int inCost;
int inBowed;
int inStrings;
string inSound;
string inMaterial;
MusicalInstrument* p2i[MAX];
ifstream infile;
infile.open("prog7.txt");
while (i < MAX && !infile.eof())
{
infile >> inType;
if (inType == "S")
{
getline(infile, inName);
infile >> inCost;
infile >> inBowed;
infile >> inStrings;
p2i[i] = new StringInstrument(inName ,inCost ,inBowed ,inStrings);
p2i[i]->displayInstrument();
}
else
{
getline(infile, inName);
infile >> inCost;
getline(infile, inSound);
getline(infile, inMaterial);
p2i[i] = new BrassInstrument(inName, inCost, inSound,inMaterial);
p2i[i]->displayInstrument();
}
i++;
}
infile.close();
while (i < MAX)
{
delete p2i[i];
p2i[i] = nullptr;
i++;
}
return(0);
}
不需要创建派生类的对象。因为在多态性中,我们可以直接使用基类的派生类。 在基层,, 基类对象; object.function\u名称; 它将直接访问派生类。请发布音乐工具。弦乐等等,换句话说,还有,
~/cs2020$ a.out
Type: String Instrument
Name: MessiahStradivarius
Cost: 1.8e+07
Bowed: 1
Strings: 4
Type: String Instrument
Name: TheTitanic
Cost: 0
Bowed: 1
Strings: 4
Type: String Instrument
Name: TheTitanic
Cost: 0
Bowed: 1
Strings: 4
Type: String Instrument
Name: TheTitanic
Cost: 0
Bowed: 1
Strings: 4
Type: String Instrument
Name: TheTitanic
Cost: 0
Bowed: 1
Strings: 4
Type: String Instrument
Name: TheTitanic
Cost: 0
Bowed: 1
Strings: 4
Type: String Instrument
Name: TheTitanic
Cost: 0
Bowed: 1
Strings: 4