Функции-члены - PullRequest
       29

Функции-члены

0 голосов
/ 30 марта 2012

Я получаю сообщение об ошибке в строке "void operation" при компиляции, потому что я еще не определил Gate_ptr. Я думал об обмене «Gate_ptr» просто «Gate *» вместо этого в функции def. Тем не менее, есть ли способ сохранить мой текущий стиль?

  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;

Ответы [ 2 ]

4 голосов
/ 30 марта 2012

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;
};
4 голосов
/ 30 марта 2012

Предпочитаю этот заказ:

 //forward decleration
class Gate;

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

//class definition
class Gate
{
   public:
//...
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...