C++ 未定义对已定义函数的引用

标签 c++ g++ undefined-reference

我无法弄清楚为什么这不起作用。我将把我的所有三个文件都放好,可能有人可以告诉我为什么它会抛出这个错误。我正在使用g++编译程序。

程序:

#include <iostream>
#include "h8.h"

using namespace std;

int main()
{
  char sentence[MAX_SENTENCE_LENGTH];
  char writeTo[] = "output.txt";
  int distanceTo,likePosition, length, numWords;
  cout << "ENTER A SENTENCE!   ";
  cin.getline(sentence, 299);
  length = strlen(sentence);
  numWords = wordCount(sentence, length);
  for(int x = 0; x < 3; ++x)
  {
    likePosition = likePos(numWords);
    distanceTo = lengthTo(sentence, likePosition, length);
    insertLike(sentence, distanceTo, length, writeTo);
  }
  return 0;  
}

函数文件:

void insertLike(const char sentence[],  const int lengthTo, const int length, char writeTo[])
{
  char part1[MAX_SENTENCE_LENGTH], part2[MAX_SENTENCE_LENGTH];
  char like[] = " like ";
  for(int y = 0; y < lengthTo; ++y)
    part1[y] = sentence[y];
  for(int z = lengthTo+1; z < length - lengthTo; ++z)
    part2[z] = sentence[z];
  strcat(part1, like);
  strcat(part1, part2);
  writeToFile(sentence, writeTo);
  return;
}

头文件:

void insertLike(const char sentence[], const int lengthTo, const int length, const char writeTo[]);

错误是:

undefined reference to 'insertLike(char const*, int, int, char const*)'
collect2: ld returned 1 exit status

最佳答案

insertLike的声明和定义不同

在你的头文件中:

void insertLike(const char sentence[], const int lengthTo, const int length, const char writeTo[]);

在您的“函数文件”中:

void insertLike(const char sentence[], const int lengthTo, const int length,char writeTo[]);

C++ 允许函数重载,您可以在其中拥有多个同名的函数/方法,只要它们具有不同的参数。参数类型是函数签名的一部分。

在这种情况下,insertLikeconst char* 作为其第四个参数,insertLikechar * 作为它的第四个参数是不同的功能

关于C++ 未定义对已定义函数的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4130434/

相关文章:

c++ - 将编译器标志传递给需要编译的 boost 库(例如 Thread)

c++ - 我创建静态数据成员的代码有什么问题?

c++ - 加速单个文件的 gcc 编译

c++ - 指向构造函数中非常量指针的常量指针

c++ - 对 main() 中函数的 undefined reference

c++ - 为什么模板只能在头文件中实现?

c++ - 通过在另一个类中引用返回一个类对象

c++ - 使用类型删除在 C++11 中删除 void*

c++ - 删除 vector 中的元素,该元素使用 'new' 运算符分配

c++ - 对类构造函数的 undefined reference