Ошибки включения файлов (C ++): неопределенная ссылка на ______

Каждый раз, когда я компилирую что-то, что # включает определенный пользователем класс, я получаю эти ошибки компиляции, которые всегда выглядят так: main.cpp: undefined ссылка на 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;
}

ред: теперь у меня разные ошибки, значит, я делаю что-то совершенно не так. Используя тот же код, что и выше, я получаю:

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, и теперь ничего не работает.

7
задан thko 5 January 2012 в 00:52
поделиться