Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 运行函数时获取错误_C++_Function - Fatal编程技术网

C++ 运行函数时获取错误

C++ 运行函数时获取错误,c++,function,C++,Function,当我试图用一个函数来求向量的中值时,我得到了一些疯狂的错误。我不确定是什么导致了这些错误 'Error 1 Error C2601:'calcMed':本地函数定义非法' 我尝试使用的函数声明为 #include <iostream> #include <vector> #include <string> #include <iomanip> #include <algorithm> using namespace std; dou

当我试图用一个函数来求向量的中值时,我得到了一些疯狂的错误。我不确定是什么导致了这些错误

  • 'Error 1 Error C2601:'calcMed':本地函数定义非法'
  • 我尝试使用的函数声明为

    #include <iostream>
    #include <vector>
    #include <string>
    #include <iomanip>
    #include <algorithm>
    using namespace std; 
    
    double calcMed(int, vector<int>& studentScores);
    
    //
    
    double homeworkMed = calcMed(vectorSize, studentScores);
    
    double calcMed(int vectorSize, vector<int>& studentScores)
    {
     double median;
    
      sort(studentScores.begin(), studentScores.end());
    
      median = studentScores[vectorSize / 2];
    
      return median;
    }
    
    #包括
    #包括
    #包括
    #包括
    #包括
    使用名称空间std;
    双重计算(整数、向量和学生分数);
    //
    双作业MED=计算(向量大小、学生分数);
    双重计算(整数向量大小、向量和学生分数)
    {
    双中位数;
    排序(studentScores.begin(),studentScores.end());
    中位数=学生分数[vectorSize/2];
    返回中值;
    }
    
    我知道,如果我有一个奇数向量,它就不起作用了,但我只想让第一个向量起作用。任何帮助都将不胜感激

    删除了“double calcMed(int vectorSize,vector&studentScores)”上的分号,现在我得到了两个不同的错误,它们都在函数名的后面

    这两个错误都发生在具有{

    double calcMed(int vectorSize, vector<int>& studentScores)
    {
    
    double calcMed(整数向量大小、向量和学生分数)
    {
    
    链接器错误表示找不到
    CalAverage()
    的实现。您是否可能将
    CalAverage()
    重命名为
    calcMed()
    ,并且不更新对此函数的任何调用

    要修复此错误,我将在所有代码中搜索
    calAverage()
    ,然后将它们重命名为
    calcMed()
    ,或者为其提供一个实现。

    double calcMed(int vectorSize,vector&studentScores);
    
    double calcMed(int vectorSize, vector<int>& studentScores);
    {
      double median;
    
      sort(studentScores.begin(), studentScores.end());
    
      median = studentScores[vectorSize / 2];
    
      return median;
    }
    
    { 双中位数; 排序(studentScores.begin(),studentScores.end()); 中位数=学生分数[vectorSize/2]; 返回中值; }
    定义中的函数签名后不应有分号。请将第一行更改为
    double-calcMed(int-vectorSize、vector和StudentScores)
    对不起,我找到了。出于某种原因,我将函数放在了main()中。在我将其移出括号后,它解决了错误。感谢大家的帮助。

    你确定没有涉及
    CalAverage
    吗?给我们一个答案,我敢打赌问题会很明显。除非你试图在
    main
    中定义它,否则它是如何编译的?@chris it not.CNR.=p“运行函数时出错”不,不完全。这不是运行时错误。这是编译错误。至少应该对你所做的有一些想法。@ H2CO3这是我第一次在C++上使用函数,抱歉使用不正确的单词,我只知道如果我注释了我的函数,那么我的代码就不会有任何错误,所以我认为它有问题。正在初始化函数。很抱歉,我在复制代码后更改了向量名称,我更新了错误谢谢,我删除了该错误,并在下一行的{上又出现了两个错误。我在问题中发布了新错误。您不能在
    main()
    中定义
    calcMed
    。它应该在
    main()之外声明和定义
    。我在'main()之前移动了if“谢谢。我仍然有同样的错误,尽管你能发布完整的代码吗?我会从一些小而简单的东西开始,比如
    HelloWorld
    ,测试它,然后添加一个返回0的函数,测试它,然后编辑它以向量作为参数,测试它,然后编辑它以打印向量,测试它,然后在打印之前对它进行排序。”测试它,然后打印它认为是中间的索引,测试它,然后返回中间值,最后删除打印输出语句并测试它,最重要的是,我永远不会添加不起作用的代码。如果你从头到尾写,它在最后才起作用,所以你无法测试它,所以它会失败。