标签:
往往是链接时出现错误,无法解析引用。这篇文章总结的很好undefined reference问题总结
链接文件没有建立
1 #include<vector> 2 #include<algorithm> 3 #include<iostream> 4 #include<cstdio> 5 using namespace std; 6 class Solution { 7 static int** nv; 8 static bool cmp(int x, int y){ 9 int lenx = nv[x][0]; 10 int leny = nv[y][0]; 11 for(int xi = lenx-1, yi = leny-1; xi > 0, yi > 0; xi--, yi--){ 12 if(nv[x][xi] < nv[y][yi]) return true; 13 if(nv[x][xi] > nv[y][yi]) return false; 14 } 15 return false; 16 } 17 public: 18 vector<int> lexicalOrder(int n) { 19 nv = new int* [n+1]; 20 for(int i = 1; i < n+1; i++){ 21 nv[i] = new int[10]; 22 } 23 for(int i = 1; i <= n; i ++){ 24 int y = i; 25 int yi = 1; 26 while(y != 0){ 27 nv[i][yi++] = y % 10; 28 y = y / 10; 29 } 30 nv[i][0] = yi; 31 } 32 vector<int> v; 33 for(int i = 1; i <= n; i ++){ 34 v.push_back(i); 35 } 36 sort(v.begin(), v.end(), cmp); 37 return v; 38 } 39 // vector<int> lexicalOrderList(int start, int last, int s, int n, vector<int>& v){ 40 41 // } 42 43 }; 44 int main(){ 45 Solution s; 46 vector<int> v = s.lexicalOrder(13); 47 for(int i = 0; i < v.size(); i ++){ 48 cout << v[i] << " "; 49 } 50 cout << endl; 51 return 0; 52 }
编译:
错误在于没有对static成员变量在类外初始化,所以没有对static成员建立的链接文件。
ps:
之所以要把cmp函数写成static,是因为cmp函数如果作为普通成员函数,自带一个this指针作为类指针的隐含参数,不能用于std::sort()函数。
参考文献:
vector排序问题<unresolved overloaded function type>
undefined reference问题总结
error: ld returned 1 exit status 和 error:undefined reference
标签:
原文地址:http://www.cnblogs.com/jxzheng/p/5792497.html