Ситуация примерно такая:
существует несколько overloaded функций,создающих объект полиморфного класса. Необходимо изменить сообщение о стандартной ошибке, если нет ни одной подходящйе функции для исходного обьекта этого типа..
например:
class unknown
{
public:
virtual ~_void() {};
}
class Test1: unknown
{
public:
virtual ~Test1() {};
}
class Test2: unknown
{
public:
virtual ~Test2() {};
}
class container
{
public:
virtual void name()=0;
}
<template class T>
class simple_container: container
{
public:
virtual void name() { printf("%s",typeid(T).name()); };
}
class class_container: container
{
unknown *object;
public:
class_container(unknown * obj):object(obj) {}
virtual void name() { printf("%s",typeid(*object).name()); };
}
#define TC(type) container * cont(type &) { return new simple_container<type>(); }
#define TCC(type) container * cont(type * data) { return new class_container(data); }
TC(int);
TC(float);
TC(char);
TCC(Test1);
TCC(Test2);
если, нарпимер, определить еще тип
Test3, насдедник от
unknown, то он по вполне понятным причинам не будет подходить под синтакиси существующих функций-конструкторов.
MSVC выдет сообщние:
none of 5 overloaded functions....
Как можно именно вот это сообщение и заменить?
P.S. пример не проверялся на работатоспособность..