アプリ版:「スタンプのみでお礼する」機能のリリースについて

C++素人です。他の人が作成したC++のプログラムを急ぎでコンパイルをする必要があるのですが、原因がわからず困っています。分かる方宜しくお願いします。

以下に記載している内容がヘッダに定義されていて、コンパイルすると
'xxxxx(変数名)'はこのスコープで宣言されていません とメッセージが出ます。

エラーが出ている XIUDLQueue のクラス宣言からさかのぼると
XIUDLQueue は XIUDLList を継承していて、
XIUDLList は XILListHeader を継承しているので、
XILListHeaderクラスで potected 宣言しているmn_count、m_first、m_last変数は
XIUDLQueueのメンバ関数で使用できそうな気がしますが違うのでしょうか?

template <class T, class TT>
class XILListHeader { // LINKED LIST HEADER
protected :
INT mn_count; // 宣言されていませんとエラーが出ている変数
T * m_first; // 宣言されていませんとエラーが出ている変数
T * m_last; // 宣言されていませんとエラーが出ている変数

public :
XILListHeader<T,TT> () { Init(); }
virtual ~XILListHeader<T,TT> ();

VOID Init ();
VOID InitHeader () { Init(); }

INT Count () { return mn_count; }
VOID Count (INT *count) { *count = mn_count; }
T * First () { return m_first; }
VOID First (T **cell) { *cell = m_first; }
T * Last () { return m_last; }
VOID Last (T **cell) { *cell = m_last; }

virtual VOID Push (TT value) {;}
virtual VOID Push (T *cell) {;}
virtual VOID Push (XILListHeader<T,TT> *hdr) {;}
virtual VOID Push (T &cell) {;}
virtual VOID Push (XILListHeader<T,TT> &hdr) {;}
};
/* /////////////////////////////////////////////////////// */
template <class T>
class XIUDLCell {
protected :
T m_value;
XIUDLCell<T> * m_next;
public :
XIUDLCell<T> () { m_next = NULL; }
XIUDLCell<T> (T value);
~XIUDLCell<T> () {;};

T Value () { return m_value; }
VOID Value (T *value) { *value = m_value; }
XIUDLCell<T> * Next () { return m_next; }
VOID Next (XIUDLCell<T> **cell) { *cell = m_next; }

VOID PutValue (T value) { m_value = value; }
VOID PutNext (XIUDLCell<T> *cell) { m_next = cell; }
VOID PutNext (XIUDLCell<T> &cell) { m_next = &cell; }
};
/* /////////////////////////////////////////////////////// */
template <class T>
class XIUDLList : public XILListHeader<XIUDLCell<T>,T> { // UNI-DIRECTIONALLY LINKED LIST
public :
XIUDLList<T> () : XILListHeader<XIUDLCell<T>,T> () {;}
~XIUDLList<T> () {;}

XIUDLCell<T> * PopCell ();
};
/* /////////////////////////////////////////////////////// */
template <class T>
class XIUDLQueue :
public XIUDLList<T> {
public :
XIUDLQueue<T> () : XIUDLList<T> () {;}
~XIUDLQueue<T> () {;}

VOID Push (T value);
VOID Push (XIUDLCell<T> *cell);
VOID Push (XILListHeader<XIUDLCell<T>,T> *hdr);
VOID Push (XIUDLCell<T> &cell) { Push(&cell); }
VOID Push (XILListHeader<XIUDLCell<T>,T> &hdr) { Push(&hdr); }
};
/* /////////////////////////////////////////////////////// */
template <class T>
VOID
XIUDLQueue<T>::Push (
XILListHeader<XIUDLCell<T>,T> * hdr
){
XIUDLCell<T> * cellFirst;
INT count;

if ( !hdr ) {
return;
}

count = hdr->Count();
if ( count < 1 ) {
return;
}

cellFirst = hdr->First();
if ( mn_count > 0 ) { // 'mn_count'はこのスコープで宣言されていません
m_last->PutNext(cellFirst); // 'm_last'はこのスコープで宣言されていません
}
else {
m_first = cellFirst; // 'm_first'はこのスコープで宣言されていません
}
m_last = hdr->Last(); // 'm_last'はこのスコープで宣言されていません
mn_count += count; // 'mn_count'はこのスコープで宣言されていません
}

A 回答 (1件)

    • good
    • 1
この回答へのお礼

そちらのサイトを参考に何とか原因が分かりました。ありがとうございました。

お礼日時:2016/03/02 15:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!