Я относительно новичок в этом форуме и объектно-ориентированном языке, поэтому, пожалуйста, простите меня, если это кажется глупым. Я просто хочу проверить вызов функции, в частности конструктора, с массивами в качестве аргументов.Неопределенные ссылки на конструктор с массивами
главный источник
#include <iostream>
#include "d.h"
using namespace std;
int main() {
double pos[2] = { 2, 3} ;
double speed[2] = { 0, 0} ;
double accel[2] = { 1, 0} ;
Body human(pos, speed, accel);
}
заголовка класса
#ifndef D_H
#define D_H
class Body {
public:
Body(double k[], double l[], double m[]);
~Body();
protected:
double p[2] ;
double v[2] ;
double a[2] ;
private:
};
#endif // D_H
источник класса
#include "d.h"
#include <iostream>
Body::Body (double k[], double l[], double m[])
: p(k) ,
v(l) ,
a(m)
{
//ctor
}
Body::~Body(){
}
Я получаю Билд сообщения:
undefined reference to 'Body::Body(double*, double*, double*)'
undefined reference to 'Body::~Body()'
Было бы хорошо, если бы кто-то может мне помочь. Как правильно использовать массивы в моем конструкторе? И почему та же проблема относится к моему деконструктору? Он говорит то же самое, когда я полностью удаляю деконструктор (декларация И реализация).
Вы строите исходный файл, содержащий определение конструктора и деструктора как часть проекта, и связываете результат с исполняемым файлом? –
Я бы второй Энди. Похоже, вы не создаете исходный файл для 'Body' –
Хорошо, я не создал исходный файл. Я использую Code :: Blocks и думал, что он будет автоматически их строить, когда я скажу ему, чтобы он не закрывал заголовок. – AyJ3y