【发布时间】:2018-02-17 23:44:02
【问题描述】:
这编译得很好。
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)
{
};
只要我取消注释以下代码
'populateList(wide, in);'
我收到以下错误
'ld 返回 1 个退出状态错误'
编译后。 看了很多论坛都没有解决问题。我们最近研究了结构和类,我不确定我是否误解了一个概念或如何让它发挥作用。
该代码应该通过命令行传递一个文件,然后稍后能够访问它并根据足球运动员的不同统计数据(即 10 名球员)进行冒泡排序。我不想握着我的手,这就是为什么我把剩下的留给我以后去挣扎。该代码在没有该函数的情况下可以在 main 中运行,但是一旦我尝试使用我拥有的代码调用该函数,它就会给我一个错误。
此外,当我尝试将它们作为指针传递时,它给了我一个无法将 myType* 转换为 myType
更新完整的错误:
'在函数
main': (.text+0xad): undefined reference topopulateList(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 宽,ifstream in)之前的预期主表达式;
【问题讨论】:
-
1.这是您收到的唯一错误消息吗? 2. 未注释的代码应该做什么? 3. 你确定你用的是Visual C++?
-
被注释掉的代码是否试图调用您的 populateList 函数?如果是这样的话,你想要
populateList(wide, in);。您的函数说明了它期望的类型,当您调用它时,您传递了这些类型的实例。 (顺便说一下,它们不必被称为wide和in。不过,它们很好。) -
您的声明和定义不同 - 您必须修复它。链接器不会找到函数,它会认为它是不同的重载。调用函数时 - 您不只传递类型变量:
populateList(wide, in); -
我在 ubuntu 和 g++ 上使用 gedit 进行编译。是的,注释掉的代码是我正在尝试使用的,是什么给了我错误。
-
删除了不相关的“visual c++”标签。你用的是什么版本的g++?这应该给出编译错误,而不是链接器错误。 demo