线程出错

时间:2011-10-08 07:13:59

标签: c++ pthreads

嘿伙计们,我对这段代码有点麻烦。我没有看到任何错误。但它给了我错误,如

hw2.cpp:35:错误:请求'my_data'中的成员'max2',这是非类型'thread_data *' hw2.cpp:35:错误:请求'my_data'中的成员'max',这是非类型'thread_data *' hw2.cpp:36:错误:请求'my_data'中的成员'max',这是非类型'thread_data *' hw2.cpp:39:错误:请求'my_data'中的成员'max2',这是非类型'thread_data *' hw2.cpp:40:错误:请求'my_data'中的成员'max2',这是非类型'thread_data *'

    struct thread_data
        {
          char *file_name;
          int max;
          int max2;
        };

        struct thread_data thread_data_array[NUM_THREAD];

        void *FindNum(void *threadArg)
        {
          int in_num;
          struct thread_data *my_data;
          my_data = (struct thread_data *) threadArg;
  file.open (my_data.file_name);                                                   
  if (file.is_open())                                                                
  cout << "file can not be file"<<endl;  

          while (!file.eof())
            {
              file >> in_num;
              if (in_num > my_data.max){
                my_data.max2 = my_data.max;
                my_data.max = in_num;
              }

              else if (in_num > my_data.max2){
                my_data.max2 = in_num;
              }

            }

          pthread_exit(NULL);
        }

1 个答案:

答案 0 :(得分:3)

好吧,my_data指向结构的指针,而不是结构。你必须使用dereference(*)才能进入结构。尝试:

my_data->max2 = my_data->max

基本上my_data->max2(*my_data).max2的语法糖。