royqh1979 / RedPanda-CPP

A light-weight C/C++ IDE based on Qt
GNU General Public License v3.0
950 stars 103 forks source link

如果类中声明或定义了构造函数,那么它的函数调用链的返回类型不能被编辑器正确推断 #374

Closed West-Pavilion closed 5 months ago

West-Pavilion commented 5 months ago

如果类中声明或定义了构造函数,那么它的函数调用链的返回类型不能被编辑器正确推断

请考虑如下的 C++ 代码:

#include <iostream>

/* 这里定义一个含有构造函数声明的类 */
class basic_tree {
public:
    basic_tree();
    basic_tree& water();
};

/* 这里定义一个不含构造函数声明的类 */
class basic_table {
public:
    basic_table& buy();
};

int main(){
    basic_tree no_completion;
    [[maybe_unused]]
    basic_table have_completion;

    /* 在如下的函数调用链中,没有对函数 water() 返回值的对象的代码补全提示 */
//  no_completion.water().

    /* 在如下的函数调用链中,有对函数 buy() 返回值的对象的代码补全提示 */
//  have_completion.buy().
}

屏幕截图(349)

屏幕截图(350)

下面是对应的测试代码:

如果类中声明或定义了构造函数,那么它的函数调用链的返回类型不能被编辑器正确推断.zip