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