Re[7]: ошибка could not deduce template argument ...
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 28.12.11 16:41
Оценка:
Здравствуйте, w40, Вы писали:

B>>

B>>VC6 is not up to C++ standards.

w40>о как! сделать что ли библиотеку на 2005.. и прикомпилять к основному проекту...

VC6 — это вообще притча во языцех. То, что ты пытаешься сделать (вложенные шаблоны, шаблоны методов) лучше вообще обходить стороной, если работаешь с VC6. Я бы посоветовал тебе взять более новую версию, хотя бы VC2005. А ещё лучше — VC2008 или VC2010 — там и среда получше, и компилятор, и генерируемый код.

Чтобы не быть голословным, советую тебе сходить в поиск по этому форуму по ключевому слову: "VC6".
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: ошибка could not deduce template argument ...
От: wander  
Дата: 28.12.11 18:09
Оценка:
Здравствуйте, k.o., Вы писали:

KO>А, по-моему, и так понятно, в чем проблема.


Это у тебя модуль телепатии хороший. Мне тоже было понятно, но Сыроежку лично я понимаю. Гораздо проще помочь человеку, если ты сразу же сможешь увидеть что именно у него не получается. Это банально в интересах спрашивающего.
Re[6]: ошибка could not deduce template argument ...
От: w40  
Дата: 29.12.11 10:05
Оценка:
спасибо! жаль, что в vc6 не работает.
Re: ошибка could not deduce template argument ...
От: w40  
Дата: 29.12.11 10:21
Оценка:
большое всем спасибо за участие!
Для 2005 идр. — я разобрался, но это не считается

спасибо! жаль, что в vc6 не работает. А надо бы. Очень.
но это ужЕ другая история...
во-1ых, виноват, но оказалось, что мой пример не соответствует....
во-2ых, в функции понадобился аргумент как раз типа (как раньше "AC"),
и одна проблема пропала, но появилась др.ошибка.
и опять же только в vc6.
error C2670: '_process_packetT' : the template function cannot convert parameter 2 from type 'struct CPkt4'

сообщение в стандартном виде должно выглядеть как:
'function' : cannot convert parameter number from 'type1' to 'type2'
но как видно из сообщения — в нём недостает "to `type`"

т.е. компилятор воще не сумел понять 2го типа в функции.

подскажите пожалуйста, как с этим бороться ? (в vc6!!!)

а вот и соответствующий пример:
struct CPkt4 
{
    int a,b,c;
};
struct CLess4
{
    typedef CPkt4 CXPkt;
};

template<class CLessT>
class CTcpStreamT 
{
public:
    typedef CLessT CLess;
    typedef typename CLess::CXPkt CXPkt;
};
typedef CTcpStreamT<CLess4> CTcpStream4;

template<class CTcpStreamT>
class CTcpCollectorT
{
public:
    typedef typename CTcpStreamT CTcpStream;
    typedef typename CTcpStream::CXPkt CXPkt;
};
typedef CTcpCollectorT<CTcpStream4> CTcpCollector4;

class CTcpCollectorWrapper
{
public:
    CTcpCollector4 m_TcpCollector4;
    //здесь еще .. CTcpCollector6 m_TcpCollector6;

    template<class CTcpCollectorT>
    int _process_packetT(CTcpCollectorT& collector, /*CPkt4&*/ typename CTcpCollectorT::CXPkt& a)
    {
        printf("%d %d %d \n",a.a,a.b,a.c);
        return 0;
    }
};

int main(int argc, char* argv[])
{
    CTcpCollectorWrapper w;
    CTcpCollector4::CXPkt x = {12,13,14};
    w._process_packetT(w.m_TcpCollector4, x);
    return 0;
}
Re[2]: ошибка could not deduce template argument ...
От: w40  
Дата: 29.12.11 11:08
Оценка:
ура! нашел! просто заменил в пред.примере
template<class CTcpCollectorT> int _process_packetT(T& collector, typename CTcpCollectorT::CXPkt& a)

на
template<class T> int _process_packetT(T& collector, typename T::CXPkt& a)

ну, надо же. получается , vc6 рассматривает параметры темплэйта как ужЕ существующие классы, если они есть. так что ли?
Re[3]: ошибка could not deduce template argument ...
От: w40  
Дата: 29.12.11 11:21
Оценка:
Здравствуйте, w40, Вы писали:

w40>ура! нашел! просто заменил в пред.примере

w40>
w40>template<class CTcpCollectorT> int _process_packetT(T& collector, typename CTcpCollectorT::CXPkt& a)
w40>

w40>на
w40>
w40>template<class T> int _process_packetT(T& collector, typename T::CXPkt& a)
w40>

w40>ну, надо же. получается , vc6 рассматривает параметры темплэйта как ужЕ существующие классы, если они есть. так что ли?

я до сих пор ...
ну, блин, это всё равно, что компилятор будет выдавать ошибку на одинаковые именА переменных, объявленных в разных скопах!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.