drt 发表于 2017-4-19 23:03:07

C++新手 求助各位大佬

#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <string>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <vector>
#include <cmath>
struct function//用途
{
    string time;//日期
    string money;//金额
    string procession;//用途
    string account;
    string name;
    struct function *next;
};
struct message
{
    string account;//个人信息账号
    string name1;//名字
    string mima;//密码
    struct function F;
    struct message *next;//指向下一个结点
};
double getmoney(string t)
{
    double sum = 0;
    int flag = 1,j = 1;
    if(t.at(0) == '-'||t.at(0) == '+')
    {
      int i = 1;
      for(i = 1; i < t.size(); i++)
      {
            if(flag == 0)
            {
                sum = sum + (t.at(i)-'0')*pow(0.1,j);
                j++;
            }
            if(t.at(i) == '.')
            {
                flag = 0;
            }
            if(flag == 1)
            {
                sum = sum*10+(t.at(i)-'0');
            }
      }
      if(t.at(0) == '-')
      {
            sum*=-1;
      }
    }
    else
    {
      int i = 0;
      for(i = 0; i < t.size(); i++)
      {
            if(flag == 0)
            {
                sum = sum + (t.at(i)-'0')*pow(0.1,j);
                j++;
            }
            if(t.at(i) == '.')
            {
                flag = 0;
            }
            if(flag == 1)
            {
                sum = sum*10+(t.at(i)-'0');
            }
      }
    }
    return sum;
}
bool cmp(struct function* a,struct function* b)
{
    double a1=0,b1=0;
    a1 = getmoney(a->money);
    b1 = getmoney(a->money);
    if(fabs(a1) > fabs(b1))
    {
      return true;
    }
    else
    {
      return false;
    }

}
void sortprepare(struct message T ,string chose5)
{
    if(chose5 == "1")//按金额排行
    {
      vector<struct function*> sq;
      struct message*q;
      q = T.next;
      while(q)
      {
            struct function* f;
            f = q->F.next;
            while(f)
            {
                sq.push_back(f);
                f = f->next;
            }
            q = q->next;
      }
      vector<struct function*>::iterator start;
      start = sq.begin();
      sort(sq.begin(),sq.end(),cmp);
    }

}
int main()
{struct message T;
sortprepare(T,"5");
}
问题求助
这里的sort为什么有语法错误啊
解决语法错误即可
谢谢各位了
一下是错误
谢谢了
E:\360downloads\23e2e\main.cpp|997|error: no matching function for call to 'sort(__gnu_cxx::__normal_iterator<function**, std::vector<function*, std::allocator<function*> > >, __gnu_cxx::__normal_iterator<function**, std::vector<function*, std::allocator<function*> > >, <unresolved overloaded function type>)'|

人造人 发表于 2017-4-19 23:29:59


drt 发表于 2017-4-19 23:35:11

人造人 发表于 2017-4-19 23:29


好像加了using namespace std;还是不可以
因为我是做项目所以只是出来一部分感觉应该是有些结构了类型不对称

人造人 发表于 2017-4-19 23:50:49

drt 发表于 2017-4-19 23:35
好像加了using namespace std;还是不可以
因为我是做项目所以只是出来一部分感觉应该是有些结构了类 ...

我这边没有问题
1>------ 已启动全部重新生成: 项目: tmp_c++, 配置: Debug Win32 ------
1>mul.cpp
1>main.cpp
1>f:\workspace\c\tmp_c++\tmp_c++\main.cpp(37): warning C4018: “<”: 有符号/无符号不匹配
1>f:\workspace\c\tmp_c++\tmp_c++\main.cpp(61): warning C4018: “<”: 有符号/无符号不匹配
1>正在生成代码...
1>tmp_c++.vcxproj -> F:\workspace\C\tmp_c++\Debug\tmp_c++.exe
1>tmp_c++.vcxproj -> F:\workspace\C\tmp_c++\Debug\tmp_c++.pdb (Full PDB)
========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========
页: [1]
查看完整版本: C++新手 求助各位大佬