【问题标题】:'sm' was not declared in this scope [duplicate]未在此范围内声明“sm”[重复]
【发布时间】:2017-07-07 09:21:09
【问题描述】:

以下参考用法有什么问题,正确用法是什么。我想分配一个对较小尺寸向量的引用。

vector<int> R = {3,4,6,3,6,2,3};
vector<int> P = {5,9,8};

        if (P.size()>=R.size())
            vector<int>& sm = R;
        else
            vector<int>& sm= P;

【问题讨论】:

    标签: c++ stdvector


    【解决方案1】:

    这部分没有错。但是你不能在以后使用sm,因为它的作用域将只是ifelse 部分。

    你应该使用这样的东西:

    vector<int>& sm = (P.size()>=R.size()) ? R : P;
    

    【讨论】:

    • 或者用R和P声明然后在if-else中初始化
    • @Shirkam 这行不通,因为它是一个参考。引用必须初始化,不能重定向到另一个对象
    • 哦,我错过了那个&。感谢您的注释。
    猜你喜欢
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    相关资源
    最近更新 更多