0

Gate_ptrをまだ定義していないため、コンパイル時に「voidoperation」という行でエラーが発生します。関数defで、代わりに「Gate_ptr」を「Gate*」だけに交換することを考えました。しかし、私の現在のスタイルを維持する方法はありますか?

  class Gate
    {
        public:
                Gate();
          void operation(Gate_ptr &gate_tail, string type, int input1, int input2=NULL);

        private:
                int cnt2;
                int input_val1, input_val2;
                int output, gate_number;
                int input_source1, input_source2;
                int fanout[8];
                Gate* g_next;
                string type;
};
typedef Gate* Gate_ptr;
4

2 に答える 2

4

この順序を優先します:

 //forward decleration
class Gate;

//typedef based on forward dec.
typedef Gate* Gate_ptr; 

//class definition
class Gate
{
   public:
//...
};
于 2012-03-30T19:47:06.563 に答える
4

Forwared宣言し、typedefを実行してから、クラスを定義します。

class Gate;
typedef Gate* Gate_ptr;

class Gate
{
    public:
            Gate();
            void operation(Gate_ptr &gate_tail, string type, int input1, int input2=NULL);

    private:
            int cnt2;
            int input_val1, input_val2;
            int output, gate_number;
            int input_source1, input_source2;
            int fanout[8];
            Gate* g_next;
            string type;
};
于 2012-03-30T19:48:43.553 に答える