への一つのクラスからマトリックスを呼び出すこれまでのところ私は潮流アルゴリズムのために非常に良い結果を得ました。 私は多くのクラスを作成して計算を最適化しようとしています。は</p> <p>....私はC++に新しいですし、私自身のプロジェクトのための電力システムのシミュレーションアルゴリズムの開発をメイン/他
しかし、各変数xxx
ため、(INT、倍、アレイ/ベクトル)Iは、マトリクス型(vector<vector<complex<double>>>
)を除いて、Class.xxx
を使用して、クラス外でそれを呼び出すことができました。これは、コードの一部です:
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
)
こんにちは、アドバイスありがとうございます。 –
この行は、行列のサイズを初期化するための行です。メンバー関数からこの行を削除することで、それは機能しましたか? –
@HatemTagourti行列のサイズを初期化したい場合は、ループのように 'resize'関数を使うことができます。私は明確にするために私の答えを更新します。 – InternetAussie