diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index b6bac92bf9b18a65248e6bb9b893300ef68f03cd..1f5bb7e1f4efa7f48be94c0a24f0091912827da8 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -598,7 +598,9 @@ bool CppCodeCompletion::completeMember(const QList<TypeOfExpression::Result> &re
         if (ReferenceType *refTy = ty->asReferenceType())
             ty = refTy->elementType();
 
-        if (NamedType *namedTy = ty->asNamedType()) {
+        if (Class *classTy = ty->asClass()) {
+            classObjectCandidates.append(classTy);
+        } else if (NamedType *namedTy = ty->asNamedType()) {
             // ### This code is pretty slow.
             const QList<Symbol *> candidates = context.resolve(namedTy->name());
             foreach (Symbol *candidate, candidates) {
@@ -697,6 +699,8 @@ bool CppCodeCompletion::completeMember(const QList<TypeOfExpression::Result> &re
                 ++m_startPosition;
                 namedTy = ptrTy->elementType()->asNamedType();
             }
+        } else if (Class *classTy = ty->asClass()) {
+            classObjectCandidates.append(classTy);
         } else {
             namedTy = ty->asNamedType();
             if (! namedTy) {