Я прошу прощения за то, что я уверен, что это довольно глупый вопрос, но я не могу заставить его работать!
Я также не уверен, какая информация является слишком большой информацией, поэтому я, вероятно, не дам достаточно информации, так что извините за это тоже - просто спросите.
Я начал писать класс в main.cpp, и он стал большим, поэтому я решил перенести его в другой исходный файл. Я не слишком уверен в том, как это сделать, и не могу ничего понять, чтобы помочь решить эту конкретную проблему с интернет-ресурсов (отсюда и вопрос).
Я начал с определения класса, включающего все определения функций над основной функцией программы. Это работает нормально. Затем я разделил это на две отдельные части. Объявление класса (я думаю, что это правильный термин) над основной функцией и определения функций под основной функцией.
Это также отлично работает. Я продолжил вырезать объявление класса в заголовочный файл. Этот заголовочный файл имеет форму
#ifndef INC_MATRIX_H
#define INC_MATRIX_H
class matrix{
//ETC
};
#endif
То, что я где-то прочитал, полезно, но я не совсем уверен, почему, я думаю, что это остановит переопределение функций, если заголовок включен несколько раз.
Так что в настоящее время у нас есть этот заголовочный файл вместе с другими включениями. Затем основная функция, а затем определения функций под основной функцией. Это также компилируется и работает отлично.
Следующим шагом, который я предпринял, было вырезать определения функций в отдельный отдельный файл .cpp. Единственное добавление, которое было сделано к этому файлу .cpp, было то, что некоторые дополнительные включения должны были быть добавлены к вершине (особенно iostream и cstdlib). ТАКЖЕ был включен файл matrix.h.
В этой конфигурации Dev-C ++ вызывает ошибки компоновщика, когда я пытаюсь скомпилировать и запустить код. В частности, они имеют форму
[Ошибка компоновщика] неопределенная ссылка на matrix <bool>::matrix(int, int)
И код не запускается (очевидно).
Как я могу это исправить? Заранее спасибо.
Редактировать: Обнаружено, что это связано с тем, что это шаблонный класс и в области действия файла matrix.cpp шаблон не представлен в типе bool. Теперь я хочу выяснить, как это исправить, не добавляя много строк кода, чтобы по отдельности заставить каждую функцию принимать каждый данный тип.
О, и я ценю, что могу определить функции в шапке. Но я думал, что мы не должны были этого делать? Я думал, что идея заключается в том, что вы просто включаете декларацию.