[英]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.