私はQByteArray
class
をarr
インスタンスとして定義しています。Qtです。通常、private
メンバーのQByteArray
(および別のものはclasses
)にアクセスできません。そうでない場合は、class
にfriend
のメンバーを使用してください。Qtクラスのプライベートセクションは安全ではありません
注意怒鳴るコード:
void Widget::onBtnRun()
{
QByteArray arr;
arr = "this is a test";
arr.d->size = 5; // stop with compile error-> QByteArray::d is private
QMessageBox::information(this, "", arr);
}
QByteArray
のd
メンバーがprivate
あるとそれにアクセスすることはできません!
しかし、私はQByteArray
header
というファイルを編集していますので、そのクラスセクションに蛇行行を追加して、もう一度保存してください。
public :
friend Class Widget;
そして今、私は何の問題もなく、Widget
class
にQByteArray
class
のprivate
メンバーにアクセスすることができます。
void Widget::onBtnRun()
{
QByteArray arr;
arr = "ABCDEFGHIJKLMNOPQRSTUV";
arr.d->size = 5;
QMessageBox::information(this, "", arr);
}
MessageBox
出力は今"ABCDE"
です。
classes
はこれが欠けていますか?おそらくこの原因は将来的には非常に問題に見えます。 どのようにprivate
メンバーがthease問題から救うことができますか?
ありがとうございます!
どのような問題がありますか?たぶん、よりクリーンな方法は、プライベートメンバーのための 'getter'を書くことです – user463035818
これはどのように問題ではないか分かりません。ヘッダーファイルを編集しているので、プライベートメンバーを公開することもできます。 – thuga