私は以下のデータ型を持っています
typedef struct {
string t;
string r;
string c;
string val;
} cellProperty;
class Fl_Input__: public Fl_Input {
public:
explicit Fl_Input__ (int x, int y, int w, int h) : Fl_Input(x,y,w,h) {}
cellProperty getProperty() { return ownProperty; }
void setProperty(string t,string r,string c, string val);
private:
cellProperty ownProperty;
};
for ループを介して GUI を描画しています。各テキスト入力ボックスは、 の 2 次元配列のメンバーですFl_Input__
。r=4 & c=7
ループがポイントに到達し、例外をスローするまで、すべてがうまくいきます
「std::length_error」のインスタンスをスローした後に呼び出される終了
what(): basic_string::_S_create`
コードは Linux で正常にコンパイルおよび実行されます。win32 (mingw) 用に再コンパイルしましたが、このランタイムの問題があります。setProperty() を呼び出す場所でコードが失敗します
Fl_Box *tab2ColLabelBox[COLNUM];
Fl_Box *tab2RowLabelBox[ROWNUM];
int t = 1;
for (int r=0 ; r < (ROWNUM + 1) ; r++)
for (int c=0 ; c < COLNUM ; c++)
{
stringstream ss_t, ss_r, ss_c;
int i_v;
ss_t << t;
ss_r << (r-1);
ss_c << c;
valueString = readSettings(ss_t.str(), ss_r.str(), ss_c.str());
SplitString(valueString, v, ",");
stringstream(v.at(0)) >> i_v;
tab2OffsetInput[r][c] = new Fl_Input__(
(CELLWIDTH) * (c+2) + ((c+1) * SIDESPACE) - TXTINWIDTH,
(r+3) * CELLHEIGHT,
TXTINWIDTH,
CELLHEIGHT);
tab2OffsetInput[r][c]->align(
FL_ALIGN_LEFT + FL_ALIGN_INSIDE + FL_ALIGN_TOP);
tab2OffsetInput[r][c]->value(v.at(1).c_str());
tab2OffsetInput[r]c]->setProperty(
std::string("1"), ss_r.str(), ss_c.str(), v.at(1));
tab2OffsetInput[r][c]->maximum_size(3);
tab2OffsetInput[r][c]->callback(
callback_modSettings_tab1_txtInput, this);
v.clear();
}
どんなガイダンスでも大歓迎です!前もって感謝します...