1

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

#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();在没有参数的情况下调用时,程序可以正常工作。

现在你可能想知道为什么我从互联网上复制代码,嗯,我有一些涉及课程的电气工程课程的编程作业,我们只能使用 Borland,是的,代码在 Visual C++ 中工作......请帮助

4

1 回答 1

4

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

你误解的是这样的:

A2DD add();

它不调用默认构造函数,它只声明一个调用的函数,该函数add返回 aA2DD并且没有参数。因此,此函数声明在您的代码中基本上没有任何作用,并且从不调用默认构造函数。

如果要使用默认构造函数创建对象,则需要

A2DD add;
于 2013-11-03T21:26:26.687 回答