C++ 错误:函数'void alpha(std::string*,student)';

C++ 错误:函数'void alpha(std::string*,student)';,c++,C++,好的,我想解释一下,在代码出现问题之前,我想做些什么。我正在创建一个学生记录系统。我正试图将信息从文本文件拉入记录系统。我试图使用堆上的数组来存储信息 我最关心的是前几个错误,因为我觉得这些错误会导致以下错误。任何帮助都将不胜感激,因为我已经浏览了许多论坛,但它们并没有引导我走向正确的方向。提前谢谢 代码: 你真的需要在C++上得到教程或介绍性的文本。有太多的错误,我不知道从哪里开始。。。文件开头的#define没有任何意义(您的意图是什么?实际效果是预处理器将丢弃这些单词),您不应该通过指针处

好的,我想解释一下,在代码出现问题之前,我想做些什么。我正在创建一个学生记录系统。我正试图将信息从文本文件拉入记录系统。我试图使用堆上的数组来存储信息

我最关心的是前几个错误,因为我觉得这些错误会导致以下错误。任何帮助都将不胜感激,因为我已经浏览了许多论坛,但它们并没有引导我走向正确的方向。提前谢谢

代码:


<>你真的需要在C++上得到教程或介绍性的文本。有太多的错误,我不知道从哪里开始。。。文件开头的
#define
没有任何意义(您的意图是什么?实际效果是预处理器将丢弃这些单词),您不应该通过指针处理字符串(传递引用,如果可能是常量引用),您正在声明一个带有两个参数的
tPrint
函数,用三个定义不同的
tPrint
重载,最后一个是不正确的,因为
alpha
不是一种类型。第一个和第二个参数(在预处理器替换之后)未命名,因此无法使用


所有这些在进入第一行实际代码之前…

错误是:参数太少,无法执行函数
void alpha(std::string*,student)
。 当我们查找您键入的代码时:
alpha(pArray)。
但是函数签名是:
void alpha(string*,student pArray)

因此,将字符串作为参数传递将修复错误,但代码中还有许多其他错误:

  • void tPrint(string*,student pArray,alpha)什么是alpha?我只看到一个空的房间
  • 字符串新fName[sNUMBER];我不会编译。我想你的意思是
    string*name=newfname[sNUMBER]什么是fName
  • 还有很多奇怪的事情

也许C++教程更适合你:

1)你的代码中的三个定义可能只是简单的错误< /P>

#define pArray
#define students
#define Request
string new fName[sNUMBER];
尤其是“pArray”,因为以后会将其用作参数名

2) 你在比较一个函数和零。这没有道理,因为测试总是会成功的

if (alpha != 0)
{
    alpha(pArray);
}//end if
编辑:等等,我明白了,有一个(错误声明的)参数“隐藏”全局名称“alpha”。当然,这显然也不行,因为参数没有名称(“alpha”实际上是类型)

3) 正如David Thornley在一篇评论中所说的那样,您试图用一个参数调用函数,这显然无法工作,因为您用两个参数声明了它。(实际上您调用它时根本没有参数,因为pArray#define将“扩展”为空字符串)

4) 您试图用来声明变量的语法完全是错误的

#define pArray
#define students
#define Request
string new fName[sNUMBER];
我甚至不知道这是什么意思


而且可能还有更多…

你的大问题是
\define
s。你所做的就是将标识符定义为,字面上,什么都没有。如果有一个
阵列
,现在什么都没有了。在C++中,任何一个从<代码> > <代码>开始的行都是一个预处理器命令,这意味着它对程序的文本进行操作。为了真正定义一个标识符,你只需要,本质上描述它

您正在使用
pArray
作为函数参数,这意味着它的任何引用都不在外部范围内。如果预处理器像C++的任何其他部分一样,那么它就无害了,但是它只做文本替换。当您未能定义某些内容时,您可能希望让编译器告诉您

另一个问题是“论据太少”。您将
alpha
声明为接受两个参数,但在
tPrint
的早期调用时只传递一个参数


在你修复现有的错误之前,我不会检查其余的错误。一旦你删除了
#定义
s并自己阅读其他错误。

请花点时间对问题中的代码进行适当的格式化(使用“{}”编辑器控件)。我不确定发生了什么。我会再试一次。接下来,阅读错误。您得到“太少的参数无法运行…alpha”的原因是因为您声明并随后用两个参数定义它,然后用一个参数调用它。如果纠正这些问题会导致进一步的问题,请回来询问我们。编辑已重新完成。很抱歉,{}控件引用了文本栏上的控件栏。它在一个大的公开报价之后,在一个看起来像显示器的东西之前。你不能仅仅通过在代码周围加大括号来格式化代码。我同意#define with pArray等是错误的。我在这个奇妙的网站上搜索,找到了它。谢谢你提供的信息。我会考虑所有这些。好吧,我知道我对新的线路做了一些错误的事情。FNEY是我名字的缩写版本,它是在我的名字.CPP文件中定义的。我同意在C++上找到附加文本,因为这是有史以来最棘手的事情之一。在过去的4个月里,我一直在毫无帮助的情况下自学这些东西。因此,为什么我的代码看起来很可怕。再次感谢你们带来的一切。我将研究这些问题并继续。谢谢你的帮助。我不希望有人把所有这些都整理好,因为这是我的问题。希望这足以让我开始并继续下去。