Всякий раз, когда я компилирую что-то, что включает в себя определенный пользователем класс, я получаю такие ошибки компиляции, которые всегда выглядят так: main.cpp: undefined reference to Complex::Complex(double, double)
Я свел проблему к набору из трех чрезвычайно простых файлов:main.cpp, и, например, Complex.h и Complex.cpp.Я все еще получаю неопределенные ошибки ссылки.Я разрабатываю в Code :: Blocks в Windows, но я получаю то же самое, используя g ++ в Ubuntu.Почему это происходит?Я пытался создать Complex.cpp до main.cpp в Code :: Blocks, и я пробовал g++ main.cpp Complex.cpp
столько же, сколько g++ main.cpp
.Одни и те же ошибки каждый раз.
/*======== main.cpp ========*/
#include "Complex.h"
int main()
{
Complex A(1.0, 1.0);
return 0;
}
/*======== Complex.h ========*/
#ifndef _COMPLEX_H
#define _COMPLEX_H
class Complex
{
public:
double x, y;
Complex(double real, double imag);
};
#endif
/*======== Complex.cpp ========*/
#include "Complex.h"
Complex::Complex(double real, double imag)
{
x = real;
y = imag;
}
ed: теперь я получаю разные ошибки, поэтому я должен делать что-то совершенно неправильно.Используя тот же код, что и выше, я получаю:
main.cpp: in function 'int main()':
main.cpp:5:5: error: 'Complex' was not declared in this scope
main.cpp:5:13: error: expected ';' before 'A'
Это странно.Все работало раньше, когда у меня был класс в файле .cpp, но это «плохая практика», поэтому я переместил свои определения классов в файлы .h и сохранил реализацию в файлах .cpp, и теперь ничего не работает.