Как компилятор обрабатывает универсальные типы при их компиляции?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как компилятор обрабатывает универсальные типы при их компиляции?

Сообщение Anonymous »

Я пытался понять, почему объявление и определение функции-члена шаблона не следует создавать отдельно. и я нашел очень хороший ответ.
Шаблоны и отдельная компиляция
Чтение этой статьи заставило меня задуматься о том, как обрабатывать при компиляции. файл .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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как компилятор обрабатывает универсальные типы при их компиляции?
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как компилятор обрабатывает универсальные типы при их компиляции?
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Универсальные типы Swift и наследование
    Гость » » в форуме IOS
    0 Ответы
    26 Просмотры
    Последнее сообщение Гость
  • Почему C# запрещает универсальные типы атрибутов?
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Двоичные объекты в StreamReceiver и универсальные типы
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»