每次我尝试使用我的添加功能并从中返回一个列表。我得到一个未定义的符号错误。我在这做错了什么。
这是错误: 未定义的首次引用 文件中的符号
add(std::list<int, std::allocator<int> > const&, std::list<int, std::allocator<int> >)/var/tmp//cc78hUrW.o
ld:致命:符号引用错误。没有输出写入a.out collect2:ld返回1退出状态
#include <iostream>
#include <list>
#include <math.h>
using namespace std;
list<int> add(const list<int> &lhs, const list<int> $rhs);
list<int> sub(const list<int> &lhs, const list<int> $rhs);
list<int> mul(const list<int> &lhs, const list<int> &rhs);
int main(int argc, char* argv[])
{
/*variables*/
list<int> num1, num2, num3;
list<int> ::iterator it1, it2, it3;
char temp[1001];
int x = 0, y = 0;
it1 = num1.begin();
for(x = 0; x <= 1001; x++)
temp[x] = -42;
cout << "Number 1: ";
cin >> temp;
for(x = 0; temp[x] != -42; x++)
num1.insert(it1, temp[x] - '0');
for(x = 0; x <= 1001; x++)
temp[x] = -42;
cout << "Number 2: ";
cin >> temp;
it2 = num2.begin();
for(x = 0; temp[x] != -42; x++)
num2.insert(it2, temp[x] - '0');
it1 = num1.end();
it1--;
num1.erase(it1);
for(it1 = num1.begin(); it1 != num1.end(); it1++)
cout << *it1;
cout << endl;
it2 = num2.end();
it2--;
num2.erase(it2);
for(it2 = num2.begin(); it2 != num2.end(); it2++)
cout << *it2;
cout << endl;
num3 = add(num1, num2);
for(it3 = num3.begin(); it3 != num3.end(); it3++)
cout << *it3;
cout << endl;
return 0;
}
list<int> add(const list<int> &lhs,const list<int> &rhs)
{
/*Variables*/
list<int> left = lhs;
list<int> right = rhs;
list<int> answer;
list<int>::iterator itl, itr, ans;
int cary = 0;
int sum = 0;
int lfint = 0, rtint = 0;
int lsize=0, rsize=0;
lsize = (int)left.size();
rsize = (int)right.size();
while(lsize < rsize)
{
itl = left.end();
left.insert(itl, 0);
lsize = (int)left.size();
}
while(rsize < lsize)
{
itr = right.end();
right.insert(itr, 0);
rsize = (int)right.size();
}
itl = left.begin();
itr = right.begin();
ans = answer.begin();
while(itl != left.end())
{
lfint = *itl;
rtint = *itr;
sum = lfint + rtint;
sum = sum + cary;
cary = 0;
if(sum >= 10)
{
sum = sum - 10;
cary = 1;
}
answer.insert(ans, sum);
itl++;
itr++;
}
if(cary == 1)
{
answer.insert(ans, 1);
}
return answer;
}
答案 0 :(得分:10)
您在此处声明$
时使用的是&
而不是add()
...
list<int> add(const list<int> &lhs, const list<int> $rhs);
答案 1 :(得分:4)
问题是代码开头附近的拼写错误:
list<int> add(const list<int> &lhs, const list<int> $rhs);
list<int> sub(const list<int> &lhs, const list<int> $rhs);
将$替换为&amp;解决它。
答案 2 :(得分:2)
$ symbol在C ++中没有任何意义。可能是一个错字。
list<int> add(const list<int> &lhs, const list<int> $rhs);
list<int> sub(const list<int> &lhs, const list<int> $rhs);
应该是
list<int> add(const list<int> &lhs, const list<int> &rhs);
list<int> sub(const list<int> &lhs, const list<int> &rhs);