Re: [Interest] QSharedpointer members are not accessible: isNull and data

2020-10-23 Thread Thiago Macieira
On Friday, 23 October 2020 05:16:08 PDT Tamás Nagy wrote:
> QSharedPointer m_Validator;
> }
> 
> My custom program:
> 
>  if(di.Validator()->isNull())

Are you sure -> is the right operator here?

You didn't give us the implementation of this Validator function, so we have 
to guess. If it is:

QSharedPointer () { return m_validator; }

Then -> is wrong. The type returned by -> is QValidator and that one has no 
isNull() method.

If it is

QSharedPointer *Validator() { return _validator; }

Then -> would be correct but then there's a further problem in your code, 
where you use validator.data().

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel DPG Cloud Engineering



___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


Re: [Interest] QSharedpointer members are not accessible: isNull and data

2020-10-23 Thread Giuseppe D'Angelo via Interest

Hi,

On 23/10/2020 14:16, Tamás Nagy wrote:

class A
{
public:

private:
 QSharedPointer m_Validator;
}

My custom program:

  if(di.Validator()->isNull())
  {
 // unfortunately the di.Validator() is null
 // some A-s in the Map can have nullptr as Validator.

 if(auto validator = di.Validator())   // di is an instance of A
 {
 if(validator != nullptr)
 {


I'm having quite a hard time understanding this code.

In the first if, you dereference the result of di.Validator(). This 
implies it's not null.


Then immediately after you fetch di.Validator() again, assign it to 
"validator", and in the second if you ask if it's not null -- but... you 
already know?.


Then in the third if you ask *again*. What's going on here?

Can you put together a minimal but complete, correct, and compileable 
testcase?


Thanks,
--
Giuseppe D'Angelo | giuseppe.dang...@kdab.com | Senior Software Engineer
KDAB (France) S.A.S., a KDAB Group company
Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
KDAB - The Qt, C++ and OpenGL Experts



smime.p7s
Description: S/MIME Cryptographic Signature
___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest


[Interest] QSharedpointer members are not accessible: isNull and data

2020-10-23 Thread Tamás Nagy
Hi,

class A
{
public:

private:
QSharedPointer m_Validator;
}

My custom program:

 if(di.Validator()->isNull())
 {
// unfortunately the di.Validator() is null
// some A-s in the Map can have nullptr as Validator.

if(auto validator = di.Validator())   // di is an instance of A
{
if(validator != nullptr)
{
// old code that doesn't compile anymore with Qt 5.12.3
//QDomElement dom =
HelperS::Instance()->ValidatorToDomElement(validator.data());
// new code that compiles with Qt 5.12.3
QDomElement dom =
HelperS::Instance()->ValidatorToDomElement(di.Validator());

parameter.appendChild(dom);   // TNagy: .data removed
}
}
 }

The problem is that in spite of the QSharedPointer, the members of the
QSharedPointer:
.data() and .isNull() are not accessible at all. I also tried
parentheses but no success.
Sometimes the Validators can be null sometimes not. I have to check if
it is null or not.

What is the problem with the QSharedPointer, why is it not visible in that case?
If I try to use the intellisense on the di.Validator. it lists only
the members of the QValidator.

Tamas
___
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest