diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index 7418b8e8087539a1be3b4be0e8bb0eb0cc9418c4..be608af2b995c5b26d9cd07e0a8921b0872dcfdf 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -767,7 +767,17 @@ bool CreateBindings::visit(Namespace *ns)
 
 bool CreateBindings::visit(Class *klass)
 {
-    ClassOrNamespace *previous = enterEntity(klass);
+    ClassOrNamespace *previous = _currentClassOrNamespace;
+    ClassOrNamespace *binding = 0;
+
+    if (klass->name() && klass->name()->isQualifiedNameId())
+        binding = _currentClassOrNamespace->lookupClassOrNamespace(klass->name());
+
+    if (! binding)
+        binding = _currentClassOrNamespace->findOrCreate(klass->name());
+
+    _currentClassOrNamespace = binding;
+    _currentClassOrNamespace->addSymbol(klass);
 
     for (unsigned i = 0; i < klass->baseClassCount(); ++i)
         process(klass->baseClassAt(i));