C++ ld返回1个正在传递参数的退出状态错误

C++ ld返回1个正在传递参数的退出状态错误,c++,c++11,c++14,C++,C++11,C++14,这个编译得非常好 const int NUM_PLAYERS = 10; struct wrType { string name[NUM_PLAYERS]; string team[NUM_PLAYERS]; int catches[NUM_PLAYERS]; int yards[NUM_PLAYERS]; int td[NUM_PLAYERS]; double ypc[NUM_PLAYERS]; }; void populateList(wrType[], ifstream&);

这个编译得非常好

const int NUM_PLAYERS = 10;

struct wrType
{
string name[NUM_PLAYERS];
string team[NUM_PLAYERS];
int catches[NUM_PLAYERS];
int yards[NUM_PLAYERS];
int td[NUM_PLAYERS];
double ypc[NUM_PLAYERS];
};

void populateList(wrType[], ifstream&);

int main(int args, char* argv[])
{
wrType *wide;
char select;
ifstream in;
in.open(argv[1]);

/*populateList(wrType wide, ifstream in); code causing error*/

}

void populateList(wrType wide, ifstream in)
{   
};
一旦我取消注释下面的代码

“大众主义者(宽,内);”

我得到以下错误

“ld返回了1个退出状态错误”

编译后。 我看了很多论坛,都没能解决这个问题。我们最近进入了结构和类,我不确定我是否误解了一个概念,或者如何让它工作

该代码应该通过命令行传递一个文件,然后能够访问它,并使用气泡排序法按足球运动员的不同统计数据排序,即10名球员。我不想让别人牵着我的手,这就是为什么我把剩下的留给我以后去解决的原因。代码在没有函数和main的情况下工作,但只要我尝试用我拥有的代码调用函数,它就会给我一个错误

另外,当我尝试将它们作为指针传递时,它会给我一个错误消息:无法将myType*转换为myType

更新时出现完整错误:

'在函数
main'中:
(.text+0xad):对
populateList(wrType*,std::basic_ifstream>&)”的未定义引用 collect2:错误:ld返回了1个退出状态'

编辑2: 代码与

“populateList(wrType-wide,ifstream-in);”

返回以下错误:

在函数“int main(int,char**)”中:

34:22:错误:“宽”之前应为主表达式 populateList(wrType wide,ifstream in); ^ 34:37:错误:“in”populateList之前应为主表达式(wrType-wide,ifstream-in)


这段代码中有很多问题

  • 您需要一个记录数组,而不是一个并行数组的记录。删除上述结构中的所有
    […]

  • 您需要的是这些结构的数组,而不是指针

    wrType wide[NUM_PLAYERS];
    
  • 这不是正确的函数调用语法

  • 这与以前的声明不匹配

    void populateList(wrType[], ifstream&);
    
  • 您需要围绕此声明构建整个程序。首先,使您的
    大众列表
    定义与该行一致

    void populateList(wrType[] wide, ifstream& in)
    {
    }
    
    然后填充身体。请注意,下面的行

    in >> wide.name[x]; 
    

    不再正确,您需要更改它们。

    1。这是您收到的唯一错误消息吗?2.未注释的代码应该做什么?3.您确定使用VisualC++吗?注释的代码试图调用您的PultAlelistFor函数吗?您需要
    populateList(宽,中)如果是这样的话。您的函数表示它期望的类型,当您调用它时,您将传递这些类型的实例。(顺便说一句,它们不必被称为
    wide
    in
    。不过,它们是可以的。)你的声明和定义不同——你必须修正它。链接器找不到函数,它会认为它是不同的重载。调用函数时-不传递类型,只传递变量:
    populateList(宽,in)我正在ubuntu和g++上使用gedit进行编译。是的,注释掉的代码就是我试图使用的代码,也是导致错误的原因。删除了不相关的“visual c++”标记。您使用的是哪个版本的g++?这应该是一个编译错误,而不是链接器错误。非常感谢。它解决了这个问题。我只需要继续练习和阅读。我最初是作为wrType-wide[NUM_PLAYERS]使用的;但从未将函数声明更改为(wrType[]宽,ifstream&in)。出于某种原因,我认为键入“wrType[]”是错误的。我不确定我是从哪里得到这个概念的。有一秒钟,我以为我掌握了所有C++。我犯了一个新手错误。
    
    void populateList(wrType wide, ifstream in)
    
    void populateList(wrType[], ifstream&);
    
    void populateList(wrType[] wide, ifstream& in)
    {
    }
    
    in >> wide.name[x];