diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 6e0a511db7d23de7956439fb4ba77b01251e9140..fea6fd3ed8d305b8eea34b69bc4524d9a1976f7f 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -646,8 +646,20 @@ CPPEditor::Link CPPEditor::findLinkAt(const QTextCursor &cursor,
             typeOfExpression(expression, doc, lastSymbol);
 
     if (!resolvedSymbols.isEmpty()) {
-        Symbol *symbol = resolvedSymbols.first().second;
-        if (symbol) {
+        TypeOfExpression::Result result = resolvedSymbols.first();
+
+        if (result.first->isForwardClassDeclarationType()) {
+            while (! resolvedSymbols.isEmpty()) {
+                TypeOfExpression::Result r = resolvedSymbols.takeFirst();
+
+                if (! r.first->isForwardClassDeclarationType()) {
+                    result = r;
+                    break;
+                }
+            }
+        }
+
+        if (Symbol *symbol = result.second) {
             Symbol *def = 0;
             if (lookupDefinition && !lastSymbol->isFunction())
                 def = findDefinition(symbol);