我正在尝试使用返回函数将股票名称获取到我的派生类,但是它显示错误“类型的参数与类型的参数不兼容”。 strcpy(name,s.name()); //问题 我试图将其设置为恒定的char,但这会导致一些错误。 我正在做一个股市项目,请给我发您的想法。
#include<iostream>
#include<conio.h>
#include<fstream>
#include<string.h>
using namespace std;
class stock
{
char stockname[20];
float istockprice;
float fstockprice;
int demand;
public:
void senter();
void sdisplay();
int demands()
{
return demand;
}
char name()
{
return s.stockname[20];
}
};
class market : public stock
{
char stocksell[20];
char stockbuy[20];
float sellprice;
float rate;
public:
void marketdata();
void rate();
void search();
};
class transaction
{
public:
void credit();
void debit();
void transfer();
};
market m;
transaction t;
stock s;
void market::rate()
{
m.rate = demands();
m.rate += 1;
}
void market::search()
{
char name[30];
strcpy(name,s.name()); //Problem
ifstream search("Marketdata.txt");
if (!search)
{
cout << "Marketdata.txt file error";
return;
}
//while (search.read((char*)& m, sizeof(m)))
//{
// if (strcmp(m.stocksell,name)==0)
//{
//}
// }
}
答案 0 :(得分:2)
您对C样式字符串(和数组)感到困惑。在C ++中,您确实应该使用C ++样式字符串,但是您已经从C字符串开始了此代码,因此我们现在就继续进行。
在C中,字符串是一个字符数组,要操作该字符串,您需要指向该数组的第一个元素的 pointer 。所以这段代码是错误的
char name()
{
return s.stockname[20];
}
首先,这里有一个杂乱的s
,我不知道您认为这样做是什么(我很惊讶它可以编译)。但是要点是,因为这是C样式的字符串,所以该函数应该返回一个指针。
char* name() // returns a pointer
{
return stockname;
}
因此stockname
是一个包含C样式字符串的数组,而name
是一种返回指向数组第一个元素的指针的方法。
很奇怪,在C.C ++字符串中的处理方式以许多不同的方式非常容易。如果您真的想学习C ++,则应该将所有遗留的C知识抛在脑后。