Как изменить сообщение об ошибке компилятора?
От: Аноним  
Дата: 05.02.04 19:22
Оценка:
Ситуация примерно такая:

существует несколько 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. пример не проверялся на работатоспособность..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.