静态方法

最近做题遇到了问题:

class Solution {
public:
     bool Compare(string strNum1, string strNum2)
    {
        string strSum1;
        string strSum2;
        strSum1 = strNum1 + strNum2;
        strSum2 = strNum2 + strNum1;

        return strSum1 < strSum2 ? 1 : 0;

    }
    string PrintMinNumber(vector<int> numbers)
    {
        vector<string> vStr;
        for(vector<int>::iterator it = numbers.begin(); it != numbers.end(); ++it)
        vStr.push_back(to_string(*it));
        sort(vStr.begin(), vStr.end(), Compare);

        string str;
        for(vector<string>::iterator it = vStr.begin(); it != vStr.end(); ++it)
            str += *it;
        return str;
    }
};

这个代码编译通不过,原因很简单,sort函数的第三个参数需要一个比较函数,这个比较函数必须只有俩个参数,可是类里的方法默认第一个参数是this指针,所以Compare函数实际上有三个参数;只要在把函数定义成静态方法就可以了static bool Compare(string strNum1, string strNum2),在方法的返回值前加static关键字即可,静态方法没有this指针做参数,可是需要注意静态方法只能访问类的静态成员,不能访问非静态成员,所以如果这个Compare调用了该类其他非静态方法的话就不行了。

猜你喜欢

转载自blog.csdn.net/wzc2608/article/details/79948945