c++ - Borland C++ 5.02 无法调用带参数的构造函数

标签 c++ constructor unresolved-external borland-c++

我在从网上复制的头文件中有以下类定义

#ifndef A2DD_H
#define A2DD_H

class A2DD
{
    int gx;
    int gy;
public:
    A2DD();
    A2DD(int x,int y);
};
#endif

在我的实现文件中 `

#include "A2DD.h" 

A2DD::A2DD()
{
}

A2DD::A2DD(int x,int y)
{
  gx = x;
  gy = y;
}

现在的问题是当调用带参数的构造函数时出现以下错误。

信息:建筑...

信息:编译 C:\Users...\Desktop\main.cpp

信息:链接 C:\Users...\Desktop\main.exe

错误:错误:从 C:\USERS...\DESKTOP\MAIN.OBJ 引用的未解析的外部“A2DD::A2DD(int,int)”

#include "A2DD.h"
int main()
  {
     A2DD add(2,3);
     return 0;
  }

然而,当调用 A2DD add(); 时没有参数,程序运行正常。

现在你可能想知道为什么我从互联网上复制代码,好吧,我有一些涉及类(class)的电气工程类(class)的编程作业,我们只能使用 Borland,是的,代码在 visual c++ 中工作......请帮助

最佳答案

您需要编译和链接实现构造函数的文件 (A2DD.cpp)。你需要告诉 Borland 这是一个属于你的项目的实现文件。

你误解的是:

A2DD add();

调用默认构造函数,它只声明一个名为add 的函数,该函数返回一个A2DD 并且没有参数。因此,此函数声明基本上不会在您的代码中执行任何操作,并且永远不会调用默认构造函数。

如果你想创建一个带有默认构造函数的对象,你需要

A2DD add;

关于c++ - Borland C++ 5.02 无法调用带参数的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19758305/

相关文章:

具有多重继承的 C++ dynamic_cast

c++ - 在将参数传递给基类时使用 std::move()

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

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

c++ - 我如何更干净地编写这个基本的 C++ 程序,以更有效地运行或返回更精确的数字?

c++ - 在 C++ 中,将正数转换为 1 并将负数转换为 0 的最快方法

c++ - 从图像中删除黑色背景。

c++ - 如何强制调用类的全局实例的析构函数和构造函数(所以 "re-init"是类实例)

wcf - WCF 服务的构造函数是否应该使用错误进行错误处理?

c++ - 为什么我会收到 Unresolved external 问题?