Quindi ho una classe, e voglio determinare se ha una funzione virtuale o meno.La classe ha una funzione virtuale? C++
Il primo modo di fare è considerato dal cast dinamico.
class A
{
// hidden details..
};
class B:public A{};
int main()
{
A *a = new A;;
B* b = dynamic_cast<B*>(a);
}
Quindi, in questo caso, se c'è una funzione virtuale nella classe A, la compilazione avrà successo, in caso contrario, si verificherà questo errore:
error: cannot dynamic_cast \u2018a\u2019 (of type \u2018class A*\u2019) to type \u2018class B*\u2019 (source type is not polymorphic)
C'è un modo per verificare questo senza errore di compilazione ? NOTA: non ho supporto per C++ 11 o boost!
vedere qui: http://stackoverflow.com/questions/1107948/test-whether-a-class-is-polymorphic std :: is_polymorphic è ciò che si desidera. – paulm
Vedere ['std :: is_polymorphic'] (http://en.cppreference.com/w/cpp/types/is_polymorphic). – juanchopanza
questo è supportato da C++ 11 se non sbaglio, cosa fare se non ho ottenuto tale supporto? –