#c #pthreads
#c #pthreads
Вопрос:
Эй, ребята, у меня возникли небольшие проблемы с этим фрагментом кода. Я не вижу в этом ничего плохого. но это дает мне такие ошибки, как
hw2.cpp: 35: ошибка: запрос для члена ‘max2’ в ‘my_data’, который не относится к классу типа ‘thread_data *’ hw2.cpp: 35: ошибка: запрос для члена ‘max’ в ‘my_data’, который не относится к классу типа ‘thread_data *’hw2.cpp:36: ошибка: запрос члена ‘max’ в ‘my_data’, который не относится к классу ‘thread_data *’ hw2.cpp:39: ошибка: запрос члена ‘max2’ в ‘my_data’, который не относится к классу ‘thread_data *’hw2.cpp:40: ошибка: запрос члена ‘max2’ в ‘my_data’, который не относится к классу ‘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:
Ну, my_data
это указатель на структуру, а не на структуру. Вы должны использовать разыменование ( *
), чтобы добраться до структуры. Попробуйте:
my_data->max2 = my_data->max
В основном my_data->max2
это синтаксический сахар для (*my_data).max2
.