У меня есть следующее определение класса в заголовочном файле, который я скопировал из сети
#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 ++ … помогите, пожалуйста
Вам нужно скомпилировать и связать файл, в котором вы реализуете конструкторы (A2DD.cpp
). Вы должны сообщить Borland, что это файл реализации, который принадлежит вашему проекту.
То, что вы неправильно поняли, это:
A2DD add();
Оно делает не вызовите конструктор по умолчанию, он только объявляет функцию с именем add
который возвращает A2DD
и не имеет параметров. Поэтому это объявление функции в основном ничего не делает в вашем коде, и конструктор по умолчанию никогда не вызывается.
Если вы хотите создать объект с конструктором по умолчанию, вам нужно
A2DD add;
Других решений пока нет …