aboutsummaryrefslogtreecommitdiffstats
path: root/generator/cppgenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'generator/cppgenerator.cpp')
-rw-r--r--generator/cppgenerator.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/generator/cppgenerator.cpp b/generator/cppgenerator.cpp
index d5697ab72..b7148017c 100644
--- a/generator/cppgenerator.cpp
+++ b/generator/cppgenerator.cpp
@@ -2092,12 +2092,18 @@ void CppGenerator::writeMethodCall(QTextStream& s, const AbstractMetaFunction* f
if (func->isStatic())
mc << func->ownerClass()->qualifiedCppName() << "::";
else {
+ if (func->isConstant()) {
#ifdef AVOID_PROTECTED_HACK
- if (!func->isVirtual() && func->ownerClass()->hasProtectedMembers())
- mc << "((" << func->ownerClass()->qualifiedCppName() << "*)" << CPP_SELF_VAR << ")->";
- else
+ mc << "const_cast<const ";
+ bool hasProtectedMembers = func->ownerClass()->hasProtectedMembers();
+ mc << (hasProtectedMembers ? wrapperName(func->ownerClass()) : func->ownerClass()->qualifiedCppName());
+ mc << "*>(" CPP_SELF_VAR ")->";
+#else
+ mc << "const_cast<const " << func->ownerClass()->qualifiedCppName() << "*>(" CPP_SELF_VAR ")->";
#endif
+ } else {
mc << CPP_SELF_VAR "->";
+ }
}
if (!func->isAbstract() && func->isVirtual())