Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
#1

шаблонные функции - C++

26.11.2013, 17:43. Просмотров 236. Ответов 5
Метки нет (Все метки)

доброго времени суток уважаемые форумчане, помогите пожалуйста разобраться с шаблонными функциями, читал про них много но так и не понял почему у меня ошибка. дело обстоит так:
имеется класс визитор, в нем объявляю шаблонную функцию
visitor.h
C++
1
2
template<typename It> 
    void VisitAll(It s, It e);
visitor.cpp
C++
1
2
3
4
5
6
7
8
9
void CGeometryObjectToXMLSerializerVisitor::VisitAll(It s, It e)
{
    m_strm << "<geometryObjects>"<< std::endl;
    for (auto i = s; i!= e; i++)
    {
    ... 
    }
    m_strm << "</geometryObjects>"<<std::endl;
}
но при попытке обратиться к этой функции допустим отсюда

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void CGeometryObjectSerializersTestSuite::TestCPoint2DToXMLSerializer()
{
    std::string testStr = GetReadString("SerializerTestFile/test_point2d.xml");
    std::ofstream strm;
    strm.open("SerializerTestFile/point2d.xml");
    std::vector <IGeometryObject*> objects;
    
    CGeometryObjectToXMLSerializerVisitor xmlSerializer(strm);
    objects.push_back(new CPoint2D);
        xmlSerializer.VisitAll(objects.begin(), objects.end());
 
    std::string outStr = GetReadString("SerializerTestFile/point2d.xml");
    TS_ASSERT_EQUALS(outStr, testStr);
}
вылетает error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall CGeometryObjectToXMLSerializerVisitor::VisitAll

заранее благодарен за помощь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2013, 17:43     шаблонные функции
Посмотрите здесь:

Шаблонные функции - C++
Доброго времени суток. Есть шаблонная функция(двоичный сумматор прямого кода): template &lt;class T&gt; void Main_register::badc(T *regist, T...

Шаблонные функции - C++
Помогите, пожалуйста, реализовать шаблонную функцию, которая переставляет элементы в массиве

Шаблонные функции - C++
1) Написать шаблонную функцию для нахождения минимального из трех передаваемых чисел (для чисел типа int, double, char). В функции...

Шаблонные функции - C++
Помогите, пожалуйста, реализовать шаблонную функцию определения, есть ли число в массиве

Шаблонные функции - C++
Такой код работает. #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstring&gt; using namespace std; template &lt;typename T&gt; T...

Шаблонные функции - C++
Чет не получается написать шаблонную функцию. func.h template &lt;class T&gt; T strnstr (T str, T substr, unsigned int count) { ...

Шаблонные функции - C++
С помощью http://ru.wikipedia.org/wiki/Шаблоны_C%2B%2B пытался написать программу с шаблонной функцией по примеру использования который там...

Шаблонные функции - C++
Читал у Праты про шаблонные функции, и везде они описаны наподобие template &lt;typename Any&gt; void Swap (Any &amp;a, Any &amp;b) А если нужно...

Шаблонные функции в C++ - C++
Каждый раз когда вижу код, который должен быть простым и понятным, я понимаю его немного хуже. Вот наш код: template &lt;typename T,...

Шаблонные функции - C++
Любимой нужно, это свято... Поэтому прошу помощи... Перегрузить операторы &gt;, &lt;, == для класса Книга относительно сравнения года...

Шаблонные функции и классы - C++
Добрый день. У меня возникли проблемки при использование шаблонных функций. Вот код class LineTable{ private: AnsiString...

Реализовать шаблонные функции - C++
Хорошего дня! Помогите реализовать похожие функции через шаблон. void Library::addUser(const UserId&amp; user,const std::string&amp;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genn55
366 / 213 / 41
Регистрация: 26.12.2012
Сообщений: 707
26.11.2013, 18:01     шаблонные функции #2
Возможно так
C++
1
2
template<typename It, typename It1> 
 void VisitAll(It s, It1 e);
если функция с двумя параметрами.
Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
26.11.2013, 18:03  [ТС]     шаблонные функции #3
Цитата Сообщение от Genn55 Посмотреть сообщение
Возможно так
C++
1
2
template<typename It, typename It1> 
 void VisitAll(It s, It1 e);
если функция с двумя параметрами.
к сожалению нет, сейчас попробовал, не помогло.=(
ssXXss
264 / 186 / 10
Регистрация: 15.01.2011
Сообщений: 668
26.11.2013, 18:04     шаблонные функции #4
небольшой примерчик :
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//*.h
class MyClass
{
    int x;
    double d;
public:
    MyClass()
    {
        x = 100;
        d = 100.55;
    }
    ~MyClass(){}
 
    template<typename T>
    T func(T t,T t2)
    {
        return t + t2;
    }
    int sum(int x2)
    {
        return func<int>(x2 , x);
    }
    double sum(double d1)
    {
        return func<double>(d1,d);
    }
};
//main.cpp
//#include...
void main()
{
 MyClass mc;
 std::cout<<mc.sum(123)<<endl;;
 std::cout<<mc.sum(123.123)<<endl;
 std::cout<<mc.func<double>(0.99,0.33)<<endl;
 }
//вывод :
//223 
//223.673 
//1.32
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.11.2013, 18:06     шаблонные функции #5
Реализация шаблонной функции должна быть в хедере.
Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
26.11.2013, 18:10  [ТС]     шаблонные функции #6
Цитата Сообщение от Tulosba Посмотреть сообщение
Реализация шаблонной функции должна быть в хедере.
спасибо, сейчас попробую, я даже не подумал об этом как то.
Yandex
Объявления
26.11.2013, 18:10     шаблонные функции
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru