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

#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

错误:错误:无法解析的外部'A2DD::A2DD(int,int)'从C:\ USERS ... \ DESKTOP \ MAIN.OBJ引用
#include "A2DD.h"
int main()
  {
     A2DD add(2,3);
     return 0;
  }

但是,在不带参数的情况下调用A2DD add();时,程序可以正常运行。

现在,您可能想知道为什么我要从互联网上复制代码,对于某些涉及类的电气工程类(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/

10-17 02:27