Size: a a a

2021 February 28

SH

Serhii Herashchenko in supapro.cxx
Dmitriy
struct
X{
template <class Ty>
void foo(Ty);

template<>
void foo(int);

template<>
void foo(char*);
}
Здравствуй, ошибка линкера :)
Где тут ошибка линкера?
источник

D

Dmitriy in supapro.cxx
Serhii Herashchenko
Где тут ошибка линкера?
Я тоже был абсолютно уверен в корректности этого примера, но MSVC почему-то иного мнения
источник

SH

Serhii Herashchenko in supapro.cxx
Dmitriy
struct
X{
template <class Ty>
void foo(Ty);

template<>
void foo(int);

template<>
void foo(char*);
}
Здравствуй, ошибка линкера :)
Только
template <>
void foo<int>(int);
источник

SH

Serhii Herashchenko in supapro.cxx
Dmitriy
Я тоже был абсолютно уверен в корректности этого примера, но MSVC почему-то иного мнения
А какие ошибки
источник

SK

Stas Koynov in supapro.cxx
Anatoly Shirokov
чета не понял. какие подсказки? все дубли испокон веков выкидаются. у тебя остается единственный инстанцированный класс полученный путем инстанцирования шаблона конкретными аргументами.
значит я загнался (:
источник

D

Dmitriy in supapro.cxx
Serhii Herashchenko
А какие ошибки
unresolved external symbol - LNK2019
источник

D

Dmitriy in supapro.cxx
.cpp в проект включен и собирается корректно
источник

D

Dmitriy in supapro.cxx
Serhii Herashchenko
Только
template <>
void foo<int>(int);
В данном случае разницы нет... И ошибка никуда тоже не денется :)
источник

D

Dmitriy in supapro.cxx
Пока сделал extern template void X::foo<int>(int) ниже определения X: работает и в целом вполне наглядно, но выглядит так себе
источник

AS

Anatoly Shirokov in supapro.cxx
Dmitriy
struct
X{
template <class Ty>
void foo(Ty);

template<>
void foo(int);

template<>
void foo(char*);
}
Здравствуй, ошибка линкера :)
struct X{
 template <class Ty>
 void foo(Ty);
};

template<> inline void X::foo(int) {
   std::cout << "int";
}
template<> inline void X::foo(char) {
   std::cout << "char";
}
источник

D

Dmitriy in supapro.cxx
Anatoly Shirokov
struct X{
 template <class Ty>
 void foo(Ty);
};

template<> inline void X::foo(int) {
   std::cout << "int";
}
template<> inline void X::foo(char) {
   std::cout << "char";
}
Да, тут понятно, но мне в .cpp :(
источник

D

Dmitriy in supapro.cxx
struct X{
 template <class Ty>
 void foo(Ty);
};
extern template void X::foo(int)
Текущий вариант
источник

SK

Stas Koynov in supapro.cxx
Dmitriy
Да, тут понятно, но мне в .cpp :(
но зачем?
источник

AS

Anatoly Shirokov in supapro.cxx
Dmitriy
Да, тут понятно, но мне в .cpp :(
// h
#pragma once
struct X{
 template <class Ty>
 void foo(Ty);
};
template<> void X::foo(int);
template<> void X::foo(char);


// cpp
#include "h"
template<> void X::foo(int) {
   std::cout << "int";
}
template<> void X::foo(char) {
   std::cout << "char";
}
источник

AG

Alex Green 𓆏 in supapro.cxx
Егор
у нас так куте чат и винапи чат отпочковались
А можно на qt чат попросить ссыль?
источник

SK

Stas Koynov in supapro.cxx
Alex Green 𓆏
А можно на qt чат попросить ссыль?
источник

AG

Alex Green 𓆏 in supapro.cxx
Спасибо
источник

ДЖ

Дима Жигальов... in supapro.cxx
Ilia Zviagin
Тимати Бад ещё есть.
Очень хорошая.
Буч больше про ООП дизайн приложений, Бад - это про изучение свойств ООП языков и программ.
Спасибо
источник

Н

Никита Сочинский... in supapro.cxx
void File(string &name) {
   cout << "Name file:";
   getline(cin, name);
   ofstream f;
   f.open(name);

   if (!f) {
        cout << "Not file" << endl;
   }

   f.close();  
}
источник

C

CodeDetector in supapro.cxx
Никита Сочинский
void File(string &name) {
   cout << "Name file:";
   getline(cin, name);
   ofstream f;
   f.open(name);

   if (!f) {
        cout << "Not file" << endl;
   }

   f.close();  
}
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
источник