繁体   English   中英

对 struct::struct 的未定义引用是什么意思?

[英]What does undefined reference to struct::struct mean?

所以我有一些.cc 和.h 文件。

// Class.cc
#include "Class.h"
Class::Class(){
    this->x = 1;
    this->y = new HelpingClass[1];
    y[0] = HelpingObject{};  // Calls the HelpingObject's default ctor
}

所以这是我的 main.cc 文件,我在其中为我的 Class 创建了一个构造函数,该构造函数在我的 Class.h 文件中定义:

// Class.h
#include "HelpingClass.h"
struct Class{
    HelpingObject * y; // heap allocated array of HelpingObject
    int x;     // size of allocated array
    Class(); // The constructor
    ...
}

这个“HelpingObject”包含在我的 HelpingClass.h 中,并且在我的 VScode 文件中也包含了一个有效的 HelpingClass.cc(我知道 HelpingClass 实现已经运行良好,所以我省略了 HelpingClass.cc):

// HelpingClass.h
struct HelpingObject {
  int a;
  int b;
  HelpingObject(int a = 0, int b = 10);
}
// Doesn't really matter what this object is, but my "Class" has a field
// which is a heap allocated array of these objects

问题是,我收到错误消息“Class.cc:(.text+0x43): undefined reference to `HelpingObject::HelpingObject(int, int)' collect2.exe: error: ld returned 1 exit status”

这是什么? 如果有帮助,我正在使用 VSCode,但即使我使用 linux 中的所有这些文件的可执行文件制作 Makefile,我也会收到相同的错误。 请帮忙

编辑:我将实际代码的名称更改为这些通用名称以使其更容易,但我把它复制到这里时搞砸了哈哈。 我的代码中的语法都是正确的,我的实现不是'

你在这里犯了一些错误。

  1. Class:Class需要一个额外的冒号; 现在,它是一个转到 label 后跟一个缺少返回类型的免费 function 的定义。 解析器不知道该怎么做。
  2. 您将HelpingClass的构造函数命名为 .. Rational 它应该是HelpingClass

这些错误使您的工具链感到困惑,无法找到您的任何构造函数定义!

此外,您应该避免手动 memory 管理。 没有必要。 给自己一个漂亮的向量或 unique_ptr。

您必须在每个 class 声明的末尾添加一个分号。

例如,

struct Class
{
    ...
}

应该

struct Class
{
    ...
};

此外,您必须提供HelpingObject::HelpingObject(int a, int b)的实现

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM