簡體   English   中英

從一個類調用矩陣到另一個/ main

[英]Calling a Matrix from one class to other / main

我是C ++的新手,正在為自己的項目開發電源系統仿真算法。

到目前為止,對於潮流算法,我獲得了很好的結果。 我試圖通過創建許多類來優化計算。

但是,對於每個變量xxx (int,double,數組/向量),我都可以使用Class.xxx在類之外調用它,除了矩陣類型( vector<vector<complex<double>>> )。 這是代碼的一部分:

class Load_Flow_Class {
public:

    vector<vector<complex<double>>> Ybus; // this is a complexe matrix

    vector<complex<double>> LPQIK; 
    vector<complex<double>> LPQKI; 
    complex<double> TotalLineLoses;
    int slackbus;

//....... initiate matrix and calculate values.....................

    void YBIKmatrix (int nbus) {
        vector<vector<complex<double>>> Ybus(nbus);

        for (int i = 0; i < nbus; i++) {
            Ybus[i].resize(nbus);
        }
        for (int i = 0; i < nbus; i++) {
            for (int j = 0; j < nbus; j++) {
                Ybus[i][j]=/*.....*/
            }
        }
    }

cout << LF.Ybus[i][j]; //-------------> no issue

//.................from main()......................

nbus = 5; //example

Load_Flow_Class LF;
LF.YBIKmatrix(nbus);

for (int i /*....*/) {
    for (int j /*....*/) {
        cout << LF.Ybus[i][j];
        //----> no display and cause the program to stop 
    }
}

這僅在矩陣類型( Ybus )上發生

在編輯您的問題以使其更清楚時,我特別注意了兩行。 類定義中的這一行:

vector<vector<complex<double>>> Ybus; // this is a complexe matrix

YBIKmatrix方法中的這一行:

vector<vector<complex<double>>> Ybus(nbus);

因為您在成員函數中再次聲明了變量,所以它使類成員Ybus 陰影 函數中Ybus發生的所有更改僅發生在局部變量上,而不發生在類變量上。

要解決此問題,請在成員函數中刪除此行:

vector<vector<complex<double>>> Ybus(nbus);

如果確實要設置向量的大小,則可以改用resize ,而不是嘗試再次構造它。

Ybus.resize(nbus);

暫無
暫無

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

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