【发布时间】:2013-09-23 09:50:41
【问题描述】:
我有以下很奇怪的情况……我的 Visual Studio 编译器 2010 不喜欢下面这段代码:
QStringList lst2 = instantiatedTableInstances.split(strComma, skipper);
for(int i=0; i<lst2.size(); i++)
{
TableInstance* tabInst= v->getTableInstance(lst2.at(i));
result->addInstantiatedTableInstance(tabInst);
}
它给了我:
..\src\DeserializationFactory.cpp(1196) : error C2143: syntax error : missing ';' before 'constant'
..\src\DeserializationFactory.cpp(1196) : error C2440: '=' : cannot convert from 'QStringList' to 'int'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
..\src\DeserializationFactory.cpp(1198) : error C2228: left of '.size' must have class/struct/union
type is 'int'
..\src\DeserializationFactory.cpp(1200) : error C2228: left of '.at' must have class/struct/union
type is 'int'
还有截图:
但是如果我将变量重命名为 lst 而不是 lst2 一切都会编译...
这是 Visual Studio 2010 中的一个有趣的错误(因为 GCC 不关心它)还是有更隐藏的原因?
【问题讨论】:
-
检查 lst2 是否尚未在范围内定义/声明/宏。
-
lst2 是一个宏。从屏幕截图看起来它有不同的颜色,应该把它扔掉
-
提示:通过定义
WIN32_LEAN_AND_MEAN修复。
标签: c++ visual-studio-2010 compiler-errors