m_MAXとask()はrun()によって使用されますが、そうでない場合はpublicでなければなりません。これはどのようにして/行うべきですか?C++の静的メンバーの変数と関数はどのように隠すべきですか?
#include <vector>
class Q {
public:
static int const m_MAX=17;
int ask(){return 4;}
};
class UI {
private:
std::vector<Q*> m_list;
public:
void add(Q* a_q){m_list.push_back(a_q);}
int run(){return Q::m_MAX==m_list[0]->ask();}
};
int main()
{
UI ui;
ui.add(new Q);
ui.add(new Q);
int status = ui.run();
}
Qを次のように変更します。クラスQ { プライベート: static int const m_MAX = 17; int ask(){return 4;} フレンドクラスのUI。 }; エラーは発生しません。フォワード宣言についてはどのように注意しますか? –
多分私は間違っていたかもしれませんが、私はあなたが未知のシンボルエラーを取得すると仮定しました。しかし、友人の声明は、前方宣言のように機能するかもしれません。しかし、それは動作します。 – DeusAduro