gpt4 book ai didi

C++ 类型参数与类型参数不兼容

转载 作者:行者123 更新时间:2023-11-28 01:19:47 28 4
gpt4 key购买 nike

我正在尝试使用返回函数将 stockname 获取到我的派生类,但它显示错误“类型参数与类型参数不兼容”。 strcpy(名字,s.名字());//问题我试图将其设为常量字符,但出现了一些错误。我正在做一个关于股票市场的项目,把你的想法发给我。

#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)
//{

//}

// }
}

最佳答案

您对 C 风格的字符串(和数组)感到困惑。在 C++ 中,您确实应该使用 C++ 样式的字符串,但您已经使用 C 字符串开始了这段代码,因此我们现在将继续使用它。

在 C 中,字符串是字符数组,要操作字符串,您需要一个指向数组第一个元素的指针。所以这段代码是错误的

char name()
{
return s.stockname[20];
}

首先,那里有一个完全虚假的 s,我不知道你认为它做了什么(我很惊讶它编译)。但要点是因为这是一个 C 风格的字符串,函数应该返回一个指针。

char* name() // returns a pointer
{
return stockname;
}

所以 stockname 是一个包含 C 风格字符串的数组,而 name 是一个返回指向数组第一个元素的指针的方法。

在 C 中处理字符串的方式确实很奇怪。C++ 字符串以许多不同的方式简单得多。如果你真的想学习 C++,你应该把所有遗留的 C 东西抛在脑后。

关于C++ 类型参数与类型参数不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57025586/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com