我在C++中收到错误" [Error] ld returned 1 exit status".帮我解决这个问题

I am getting an error " [Error] ld returned 1 exit status" in C++ . Help me with this

本文关键字:status exit 问题 解决 returned ld C++ 错误 Error 我在      更新时间:2023-10-16

我正在用 DevC++ 用 C++ 制作一个程序,用于查找从1n位数字的缺失数字,但现在我收到一个错误:

[错误] ld 返回 1 个退出状态。

您可以看到我的程序并帮助我解决这个问题。 此程序现在仅对100位数字有效。

#include <iostream>
using namespace std;
class miss_number
{
public:
static int arr[100];
int miss;
int n;
public:
void displayBoard();
void getInput();
void findMissing();
void displayMissing();  
};
void miss_number :: displayBoard()
{
cout<<"The program for Finding Missing Number Between 1-100 digit";
}
void miss_number :: getInput()
{
int i;
cout<<"nEnter how many digits :";
cin>>n;
cout<<"nEnter the number between 1-100 digit :";
for(i=0;i<n-1;i++)
{
cin>>arr[i];
}   
}
void miss_number :: findMissing()
{
int i,total,totalOfArray=0;
total = n*(n+1)/2;
for(i=0;i<n-1;i++)
{
totalOfArray = totalOfArray + arr[i];
}
miss = total - totalOfArray;
}
void miss_number :: displayMissing()
{
cout<<"nMissing number :"<<miss;
}
int main()
{
miss_number o;
o.displayBoard();
o.getInput();
o.findMissing();
o.displayMissing();
return 0;
}

错误来自声明

static int arr[100];

由于已将其声明为静态,因此必须在类外部定义它:

int miss_number::arr[100];

这样,程序就可以编译和链接。如果使用 C++17,您也可以将其声明为inline static,效果将是相同的。

如果您只是删除声明中的static而不添加任何其他内容,它也会进行编译,并且在您的情况下应该是执行此操作的正确方法,因为arr是实例化对象的成员。这样,您就可以创建类的多个实例,并且每个实例都有自己的arr

话虽如此,您不需要在getInput中返回arr然后将其重新传递给findMissing,因为它从类的所有成员函数内部都是可见的。只需从所有实例的findMissing中删除所有参数即可解决此问题。