「X」コードとインターフェイスするC++コードがあります(X11のように)。いずれかの呼び出しでは、paramを文字列へのポインタのアドレスにします。コールは、カウントされた文字列を取得するように設定されています。この場合、1つの文字列(ホスト名から派生したwinname)しか使用されません。どのような場所で、現在ではの線に沿って何かされていますC_stringへのポインタへの参照を返す方法をカプセル化するには?
char winname_[257]; // to hold Cstr returned by gethostname()
string windowName{}; // holding string version (prefer strings, but need
// Cstr's for C-compat in places)
が機能しておいてください。Xfuncに渡す
string XWin::WindowName(string name) {
if (name.size()) windowName = name;
if (!windowName.size()) {
gethostname(winname_, sizeof(winname_)-1);
windowName = getResourceOrUseDefault(string("title"), string(winname_));
strcpy(winname_, windowName.c_str());
}
return windowName;
}
inline char * winname() {if (!winname[0]) WindowName();return winname;}
を、私が必要:
char * winname_p = winname_;
X機能がかかりますので:
Xfunc(&winname_p, 1, et, al.)
私は、関数内に "winname_p"参照をカプセル化することができるので、私はwinname_p[0] != 0
をチェックして関数をポインタを返すことができるが、今のところ関数を返すことに失敗している lvalue私はそれがwinname_pする左辺値を返すので、 その関数の戻り値の構文を考え出したていない
Xfunc(&winname_ptr(),1, et,al.)...
:私はのようなものを持つことができます。私はこれが簡単だと確信しています 多くの場合、私はいくつかのブロックを持っているようですが、ポインタになると&機能。