错误:'.' 标记之前的预期 unqualified-id - std :: vector
Posted
技术标签:
【中文标题】错误:\'.\' 标记之前的预期 unqualified-id - std :: vector【英文标题】:error: expected unqualified-id before ‘.’ token - std :: vector错误:'.' 标记之前的预期 unqualified-id - std :: vector 【发布时间】:2012-08-04 11:10:15 【问题描述】:代码:
#include <vector>
#include <iostream>
typedef struct
std :: string latitude;
std :: string longitude;
coordinate;
std :: vector <coordinate> previousPoints;
int main ()
coordinate.latitude = latitude;
coordinate.longitude = longitude;
previousPoints.push_back (coordinate);
return 0;
输出:
anisha@linux-y3pi:~> g++ -Wall demo.cpp
demo.cpp: In function ‘int main()’:
demo.cpp:14:12: error: expected unqualified-id before ‘.’ token
demo.cpp:15:12: error: expected unqualified-id before ‘.’ token
demo.cpp:16:38: error: expected primary-expression before ‘)’ token
我错过了什么?
【问题讨论】:
【参考方案1】:您需要创建一个实际变量以添加到您的向量中:
int main ()
coordinate c;
c.latitude = latitude;
c.longitude = longitude;
previousPoints.push_back (c);
【讨论】:
我不敢相信!!哇,有时我会很健忘,谢谢, 一些编程风格强制使用某些字母大写来避免这类问题。例如,如果您要始终使用前导大写字母命名数据类型,并且从不在标识符中使用前导大写字母,那么您在键入时就可以避免这个问题中的代码 YePhlck,我用的是“camelBack”,这不可能把我救在这里;)。 @ForEveR 此外,这只是我在此处创建的可复制示例的一部分。所以,实际的文件当然不会有全局变量。 @AnishaKaulcoordinate
应该是 Coordinate
。
@juanchopanza camelBack 风格不允许这样做。不过,我会看看还有哪些款式。【参考方案2】:
typedef struct
std :: string latitude;
std :: string longitude;
coordinate;
coordinate
是匿名结构上的 typedef,而不是对象。你应该在你的函数中创建coordinate
的对象,或者不使用typedef
,即
struct coord
std :: string latitude;
std :: string longitude;
coordinate;
现在,coordinate
是对象。还有一个问题,为什么在std
和::
之后输入空格?这是合法的,但很奇怪。
【讨论】:
这两种方法我都试过了,没用。 YePhlck 已确定故障。 :: 后的空格使代码在“我”看来“干净”。 @AnishaKaul Ehm... 第一种方法是在 main 中创建坐标对象(YePhlck 建议这样),第二种方法 - 坐标是 coord 类型的全局对象... 拥有全局变量几乎从来都不是一个好主意,所以我不会建议将此作为解决方案,TBH @YePhIcK 是的,全局对象是邪恶的,但有时 - 没关系,所以,我建议第一个解决方案,因为 OP 的代码看起来像使用全局对象。【参考方案3】:coordinate.latitude = latitude;
您需要一个对象来访问它的成员,但coordinate
只是命名一个结构。同样在右侧,您没有价值...您需要类似的东西:
coordinate c;
c.latitude = "120";
c.longitude = "10";
previousPoints.push_back(c);
【讨论】:
以上是关于错误:'.' 标记之前的预期 unqualified-id - std :: vector的主要内容,如果未能解决你的问题,请参考以下文章
来自 Qt 文件的编译时错误:在 ')' 标记之前预期的 unqualified-id
错误:在 Linux (Centos) 中的“__extension__”之前预期的 unqualified-id
SpriteBatch 和 SpriteFont (DirectXTK) 抛出错误(预期的 unqualified-id)