簡體   English   中英

如何在執行期間終止(或返回)具有結構類型的自動功能?

[英]How do I terminate (or return from) an auto function with a structure type during execution?

如何在執行期間終止具有結構返回類型的“自動”類型函數?

我想在滿足某些條件時轉義自動函數'Func'(不是整個程序),如下所示:

#include "stdafx.h"
#include <vector>
#include <tchar.h>
#include <iostream>

using namespace std;

auto Func(int B, vector<int> A) {
    for (int a = 0; a < B; a++)
    {
        A.push_back(a);
        if (a == 2)
        {
            cout << " Terminate Func! " << endl;
            // return; I want to terminate 'Func' at this point  
        }
    }

    struct result { vector <int> A; int B; };
    return result{ A, B };
}

int _tmain(int argc, _TCHAR* argv[])
{

    vector<int> A;
    int B = 5;

    auto result = Func(B, A);
    A = result.A;
    B = result.B;

    for (int a = 0; a < A.size(); a++)
    {
        cout << A[a] << endl;
    }
}

我不想使用“exit()”因為我只想終止一個函數而不是程序。

您可以在函數頂部返回一個定義返回類型的result ,然后返回一個“空”實例,如下所示:

auto Func(int B, vector<int> A) {
    struct result { vector <int> A; int B; };

    for (int a = 0; a < B; a++)
    {
        A.push_back(a);
        if (a == 2)
        {
            return result{{}, 0};
        }
    }

    return result{ A, B };
}

如果您不希望在滿足早期返回條件時返回有效對象,請考慮從函數返回std::optional<result> ,特別是在早期返回分支中返回std::nullopt 但這需要C ++ 17。

暫無
暫無

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

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