// a.h
class a{
protected:
static int *x;
/* 以下略 */
};
// a.cpp
int a::x;
/* 以下略 */
// b.h
#include "a.h"
class b:public a
{
void test();
};
このような構成で、test関数内でで正しくxの値が取得できません
正しくaクラスの値を取得する方法はあるでしょうか?
俺の手元で5分で作ったテストプロジェクトでは正しく(=俺の期待通りに)動くよ
絶対に何か(しょーもないところで)間違ってると思われる
> このような構成で、test関数内でで正しくxの値が取得できません
具体的に何がおきているのかこの文章では読み取れない
・コンパイルエラー/リンクエラーが発生するのか
・何がどうなることを期待しているのに対して、何がどうなったのか
それを他人に説明する間に原因が判明するような気もするけどな
テストプログラムも作らずに一つ。
> static int *x;
と
> int a::x;
が矛盾しています。
派生クラスのメンバ関数からstaticなa::xを使いたいってことか。
# 融通というか曖昧というかきっちりしてないからな。
>正しくxの値が取得できません
俺も、不正な値を取得してしまうという意味なのか気になる。
# そんなことないと思うけど。
デバッグ等で設定にインクリメンタルリンクとかしているなら
リビルドしてみたらいいよ。
回答ないところみるともう解決していて放置かな。