Шаблоны и контейнеры STL - PullRequest
       25

Шаблоны и контейнеры STL

0 голосов
/ 20 апреля 2011
template<typename T>
    class Foo {
        template<???>
        Foo(Container<T> c) {
        }
    };
...
//this can't be changed
std::vector<int> vec;
Foo<int> foo1(vec);
std::list<double> list;
Foo<double> foo2(list);

Ммм?

Ответы [ 2 ]

3 голосов
/ 20 апреля 2011

Сложно сказать, чего вы хотите достичь, но простой шаблон, как показано ниже, поможет вам:

template <typename T>
class Foo 
{
    Foo(std::vector<T> const& v) 
    {
        // initialize from vector
    }
    Foo(std::list<T> const& l) 
    {
        // initialize from list
    }
};

...

std::vector<int> vec;
Foo<int> foo1(vec);
std::list<double> list;
Foo<double> foo2(list);
2 голосов
/ 20 апреля 2011

Мне совершенно не понятно, о чем вы просите. Я думаю, что вам, возможно, придется отредактировать свой вопрос, чтобы он был более конкретным и более полным.

До этого ваша программа будет прекрасно компилироваться, если вы сделаете следующее:

#include <vector>
#include <list>

template <typename T>
    class Foo {
    public:
        template<typename T1>
        Foo(T1 c) {
        }
    };

std::vector<int> vec;
Foo<int> foo1(vec);

std::list<double> list;
Foo<double> foo2(list);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...