26 void operation1() { std::cout <<
"QString operation 1" << std::endl; }
27 void operation2() { std::cout <<
"QString operation 2" << std::endl; }
36 std::cout <<
"QVariant::QVariant(QString)" << std::endl;
45 std::cout <<
"SafeString::operator QVariant()" << std::endl;
57 std::cout <<
"WrappingSafeString::WrappingSafeString(QString)" << std::endl;
62 std::cout <<
"WrappingSafeString::operator QVariant()" << std::endl;
68 std::cout <<
"WrappingSafeString::operator QString()" << std::endl;
79 : m_isSafe(
false), m_wrappedSubclass(
this)
82 <<
"WrappingSubclassSafeString::WrappingSubclassSafeString(QString)"
86 bool isSafe()
const {
return m_isSafe; };
87 void setSafe(
bool safe) { m_isSafe = safe; }
98 m_wsss->m_isSafe =
false;
99 std::cout <<
"overridden string operation 2 (wrapping)" << std::endl;
105 Subclass *operator->() {
return &m_wrappedSubclass; }
109 std::cout <<
"WrappingSubclassSafeString::operator QVariant()" << std::endl;
115 std::cout <<
"WrappingSubclassSafeString::operator QString()" << std::endl;
116 return m_wrappedSubclass;
131 std::cout <<
"overridden string operation 2 (using)" << std::endl;
134 using QString::operation1;
167 int main(
int argc,
char **argv)
186 std::cout << (wsss.isSafe() ?
"IsSafe" :
"IsNotSafe") << std::endl;
188 std::cout << (wsss.isSafe() ?
"IsSafe" :
"IsNotSafe") << std::endl;