簡體   English   中英

std :: invoke和指向類成員的復雜函數指針

[英]std::invoke and a complex function pointer to class member

我正在嘗試std::invoke 我發現使用指向類成員函數,對象和任何參數的函數指針非常簡單。 我很難理解的是如何在std::invoke使用以下內容

    QTextEdit* textEdit ....
    int sz = textEdit->text().size();

以下不起作用

    int sz = std::invoke(&QTextEdit::text::size, textEdit);
    // Error : text is not a class, namespace or enumeration

我需要訪問的是int QString::size()因為QTextEdit::text返回QString 什么樣的語法可以克服這個問題?

看起來您正在對text()方法的返回值調用函數。 這意味着您的范圍將不起作用,因為size()不是類的一部分,而是返回類型的方法。 例如,如果返回類型為std::string ,則應該能夠執行以下操作:

// Calling "size()" on the returned value
int sz = std::invoke(&QTextEdit::text, textEdit).size();
// Calling "text" and "size" via "std::invoke"
int sz = std::invoke(&std::string::size, std::invoke(&QTextEdit::text, textEdit));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM