我似乎无法弄清楚是什么导致了以下错误:

这是导致错误的代码:

int main()
{
  pthread_t tidArray[NUM_TRAINS];
  Train* trainArray[NUM_TRAINS];

  for (int i = 0; i < NUM_TRAINS;  i++)
    trainArray[i] = new Train(TRAIN_NAME_ARRAY[i], TRAIN_TRANSIT_TIME_MSECS[i]);

  int trainInd = 0;

  pthread_create(&tidArray[i], NULL, initiallyNorthernly,(void*)&trainArray[i]);

  pthread_create(&tidArray[i], NULL, initiallySouthernly,(void*)&trainArray[i]);

  for  (int i = 0; i < NUM_TRAINS;  i++)
    trainArray[i] = NULL;

  pthread_join(tidArray[i], (void**)&trainInd);

  return(EXIT_SUCCESS);
}
我事先表示歉意,但是我对C/C++还是陌生的,没有什么冒出来对我不利。可能不将for循环语句放在方括号内?在此先感谢您的帮助。

最佳答案

在该行中:

pthread_join(tidArray[i], (void**)&trainInd);

您引用的i超出范围。我猜你实际上希望这是循环的一部分,例如
for (int i = 0; i < NUM_TRAINS; ++i)
    pthread_join(tidArray[i], (void**)&trainInd);

关于c++ - “Scoping” C++编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30395572/

10-11 04:42