c++ - C++创建头文件时,多个重载函数实例与参数列表匹配

标签 c++ linker-errors header-files forward-declaration function-signature

在程序的主文件中,我有以下声明

int main()
{
    Customer c;
    Part p;
    Builder b;
    auto partsVec =  readpartFile();
    auto customerVec = readcustomerFile();
    auto builderVec = readbuilderFile();

    fexists("Parts.txt");
    complexity(c, partsVec);
    robotComplexity(partsVec,customerVec);
    writeFile(buildAttempt(b, complexity(c, partsVec), variability(customerVec, builderVec)));
}

我的头文件包含以下内容
vector<Part> readpartFile();

vector<Customer> readcustomerFile();

vector<Builder> readbuilderFile();

float complexity(const Customer& c, const std::vector<Part>& parts);

void robotComplexity(vector<Part> vecB, vector<Customer> vecC);

double variability(const vector<Customer>& customerList, const vector<Builder>& builderList);

vector<double> buildAttempt(Builder b, double variaiblity, double complexityRobot);

void writeFile(vector<double> build);

除robotComplexity外,所有功能都链接在一起。我在main中对此函数的声明产生了以下错误。

一个以上的重载函数“robotComplexity”实例与参数列表匹配:-函数“robotComplexity(const std::vector>&parts,const std::vector>&customers)”-函数“robotComplexity(std::vector> vecB ,std::vector> vecC)“-参数类型为:(std::vector>,std::vector>)

即时通讯不知道为什么即时通讯收到此错误或如何解决

最佳答案

header 中的声明与定义(也可以用作声明)之间不匹配:

  • void robotComplexity(vector<Part> vecB, vector<Customer> vecC);
  • void robotComplexity(const vector<Part>& vecB, const vector<Customer>& vecC);

  • 参数名称可能不匹配,而类型名称不能匹配,否则,您将创建另一个重载。

    关于c++ - C++创建头文件时,多个重载函数实例与参数列表匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61299926/

    相关文章:

    C++ : Running a background task all the time on machine

    c++ - undefined reference 错误 - MPI 编译

    c++ - 如何在 C++ 中的单独文件中定义全局变量?

    c++ - std::launder、std::vector 和 move 仅可构造类型

    c++ - 将指针从库返回到应用程序

    c++ - 如何在 c 或 c++ 语言 (Linux) 中获取字符串 (UTF-8) 的 Unicode

    c - 项目无法在 Codeblocks IDE 中链接

    c++ - 什么是 undefined reference /未解析的外部符号错误以及如何修复它?

    c++ - 如何在 Microsoft Visual C++ 中导入 dllimport

    c++ - 为什么我不应该包含 cpp 文件而使用 header ?