c++ - 线程错误

标签 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: error: request for member ‘max2’ in ‘my_data’, which is of non-class type ‘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);
        }

最佳答案

嗯,my_data 是一个指向结构的指针,而不是结构。您必须使用取消引用 (*) 它才能到达结构。尝试:

my_data->max2 = my_data->max

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

关于c++ - 线程错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7695359/

相关文章:

c - 创建线程时如何设置stack_size、stack_addr和guardsize

linux - 有人可以解释以下线程代码吗?

c - 多线程 Web 服务器的线程池

java - 将cpp文件添加到cocos2d-x项目android项目

c++ - VS Intellisense 显示某些(不是全部)字节常量的转义字符

c++ - 在 C++ 中解码以 base64 编码的大量数据

c# - 如何在 C# 中正确制作 Dllimport?

c++ - 强制编译器选择以 const T& 作为参数的复制构造函数

java - 并发:缓存一致性问题还是编译器优化?

c - 一个线程执行多个进程