Dlatego mam klasy i chcę ustalić, czy ma on funkcję wirtualną, czy nie.Czy zajęcia mają funkcję wirtualną? C++
Pierwszy sposób, jaki należy rozważyć za pomocą dynamicznej obsady.
class A
{
// hidden details..
};
class B:public A{};
int main()
{
A *a = new A;;
B* b = dynamic_cast<B*>(a);
}
Więc w tym przypadku, jeśli istnieje funkcja wirtualnego w klasie A, kompilacji uda, inaczej, ten błąd będzie występować:
error: cannot dynamic_cast \u2018a\u2019 (of type \u2018class A*\u2019) to type \u2018class B*\u2019 (source type is not polymorphic)
Czy istnieje sposób, aby to sprawdzić bez kompilacji błędu ? UWAGA: Nie mam obsługi C++ 11 lub boost!
Zobacz tutaj: http://stackoverflow.com/questions/1107948/test-whether-a-class-is-polymorphic std :: is_polymorphic to, co chcesz. – paulm
Zobacz ['std :: is_polymorphic'] (http://en.cppreference.com/w/cpp/types/is_polymorphic). – juanchopanza
jest to obsługiwane od wersji C++ 11, jeśli się nie mylę, co zrobić, jeśli nie mam takiego wsparcia? –