"Scoping" C++编译错误
"Scoping" C ++ compilation Error
我似乎不知道是什么导致以下错误:
trainLine.cpp:108:错误:名称查找' i '更改为新的ISO ' for '作用域
trainLine.cpp:98:错误:在' i '处使用过时的绑定
下面是导致错误的代码:
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++非常陌生,没有任何事情突然出现在我身上。可能没有在循环语句周围放括号?谢谢你的帮助。
行内:
pthread_join(tidArray[i], (void**)&trainInd);
你引用的是i
,它超出了作用域。我猜你实际上是想让它成为循环的一部分,例如
for (int i = 0; i < NUM_TRAINS; ++i)
pthread_join(tidArray[i], (void**)&trainInd);
您的变量i
只存在于for
-循环内,但您试图在循环外使用它。
这样做可以解决这个问题,而不会改变代码的效果:
// ...
int i = 0; // i is now accessible outside the loop as well
for (; i < NUM_TRAINS; i++)
trainArray[i] = new Train(TRAIN_NAME_ARRAY[i],TRAIN_TRANSIT_TIME_MSECS[i]);
// use i, which is equal to NUM_TRAINS at this point
相关文章:
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- std::is_base_of表示ctor编译错误
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- Qt Cmake 错误编译"GuiSupportQt not found"
- Opengl 精度转换错误编译错误 E0415
- 库将ARM架构错误编译为架构X64
- RT 音频 Mac 错误 g++ 编译错误
- 错误编译Boost.log
- 错误编译QT创建者 / QT窗口小部件示例
- 错误编译MIPS32
- Visual Studio 2013 中的错误(编译和运行代码)
- 链接错误编译qt项目在visual 2010
- 无法用模板错误编译nsgmls
- 奇怪的错误.编译失败
- 如果有人调用c++中的方法,则强制错误(编译时)
- 来自autoconf测试的错误编译命令
- 时间限制超出错误C++编译
- SFML 2.3 和 CodeBlocks 错误编译