diff --git a/include/pybind11/pybind11.h b/include/pybind11/pybind11.h
index 0079052..1221ba6 100644
--- a/include/pybind11/pybind11.h
+++ b/include/pybind11/pybind11.h
@@ -260,7 +260,7 @@
                 chain = (detail::function_record *) rec_capsule;
                 /* Never append a method to an overload chain of a parent class;
                    instead, hide the parent's overloads in this case */
-                if (chain->class_ != rec->class_)
+                if (chain->scope != rec->scope)
                     chain = nullptr;
             }
             // Don't trigger for things like the default __init__, which are wrapper_descriptors that we are intentionally replacing
diff --git a/tests/test_issues.cpp b/tests/test_issues.cpp
index 084ea31..33f8a43 100644
--- a/tests/test_issues.cpp
+++ b/tests/test_issues.cpp
@@ -351,6 +351,26 @@
     /// Issue #484: number conversion generates unhandled exceptions
     m2.def("test_complex", [](float x) { py::print("{}"_s.format(x)); });
     m2.def("test_complex", [](std::complex<float> x) { py::print("({}, {})"_s.format(x.real(), x.imag())); });
+
+    /// Issue #511: problem with inheritance + overwritten def_static
+    struct MyBase {
+        static std::unique_ptr<MyBase> make() {
+            return std::unique_ptr<MyBase>(new MyBase());
+        }
+    };
+
+    struct MyDerived : MyBase {
+        static std::unique_ptr<MyDerived> make() {
+            return std::unique_ptr<MyDerived>(new MyDerived());
+        }
+    };
+
+    py::class_<MyBase>(m2, "MyBase")
+        .def_static("make", &MyBase::make);
+
+    py::class_<MyDerived, MyBase>(m2, "MyDerived")
+        .def_static("make", &MyDerived::make)
+        .def_static("make2", &MyDerived::make);
 }
 
 // MSVC workaround: trying to use a lambda here crashes MSCV
diff --git a/tests/test_issues.py b/tests/test_issues.py
index a2cf530..1b29ceb 100644
--- a/tests/test_issues.py
+++ b/tests/test_issues.py
@@ -237,3 +237,15 @@
 1.0
 (0.0, 2.0)
 """
+
+
+def test_inheritance_override_def_static():
+    from pybind11_tests.issues import MyBase, MyDerived
+
+    b = MyBase.make()
+    d1 = MyDerived.make2()
+    d2 = MyDerived.make()
+
+    assert isinstance(b, MyBase)
+    assert isinstance(d1, MyDerived)
+    assert isinstance(d2, MyDerived)
