Шаблоны и отдельная компиляция
Чтение этой статьи заставило меня задуматься о том, как обрабатывать при компиляции. файл .cpp с определениями функций-членов шаблона класса.
Если компилятор скомпилирует этот файл SimpleVector.cpp, что он будет делать с ?
Код: Выделить всё
--- SimpleVector.cpp ---
#include "SimpleVector.h"
#include
template
void SimpleVector::sortData() {
sort(data, data + currentSize);
}
template
int SimpleVector::size() { return currentSize; }
template
int SimpleVector::capacity() { return currentCapacity; }
Если кто-нибудь знает, как это работает, буду признателен за помощь. Или, пожалуйста, скажите мне что-нибудь, что могло бы помочь мне понять это. спасибо
Спасибо за все комментарии
Почему шаблоны можно реализовывать только в заголовочном файле?
Почему шаблоны можно реализовать только в заголовочном файле?
Спасибо за все комментарии. p>
Я видел ответ на это сообщение и привел его ниже.
Значение имени типа T get заменяется во время компиляции шаг, а не этап связывания, поэтому, если я попытаюсь скомпилировать шаблон без замены T как конкретный тип значения, который совершенно бессмысленен для компилятора, и в результате объектный код не может быть создан, поскольку он не знает, что такое T.
Здесь говорится, что компилятор не создает объектный код, потому что он не знает, что означает T
Означает ли это, что компилятор игнорирует функции, связанные с T
Например, SimpleVector ::sortData() или SimpleVector::size() в SimpleVector.cpp
(и мне очень жаль за плохое знание английского)
Подробнее здесь: https://stackoverflow.com/questions/793 ... iling-them