Do đó tôi có một lớp, và muốn xác định xem nó có hàm ảo hay không.Lớp học có chức năng ảo không? C++
Cách đầu tiên để tôi xem xét bằng tính năng truyền động.
class A
{
// hidden details..
};
class B:public A{};
int main()
{
A *a = new A;;
B* b = dynamic_cast<B*>(a);
}
Vì vậy, trong trường hợp này nếu có một hàm ảo trong lớp A, biên dịch sẽ thành công, nếu không, lỗi này sẽ xảy ra:
error: cannot dynamic_cast \u2018a\u2019 (of type \u2018class A*\u2019) to type \u2018class B*\u2019 (source type is not polymorphic)
Có cách nào để kiểm tra này mà không có lỗi biên dịch ? LƯU Ý: Tôi không có C++ 11 hoặc hỗ trợ tăng cường!
Xem ở đây: http://stackoverflow.com/questions/1107948/test-whether-a-class-is-polymorphic std :: is_polymorphic là những gì bạn muốn. – paulm
Xem ['std :: is_polymorphic'] (http://en.cppreference.com/w/cpp/types/is_polymorphic). – juanchopanza
điều này được hỗ trợ vì C++ 11 nếu tôi không nhầm, phải làm gì nếu tôi không nhận được hỗ trợ như vậy? –