代码:
#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
我错过了什么意思?
答案 0 :(得分:4)
typedef struct
{
std :: string latitude;
std :: string longitude;
} coordinate;
coordinate
是匿名结构上的typedef,而不是对象。您应该在函数中创建coordinate
的对象,或者不使用typedef
,即
struct coord
{
std :: string latitude;
std :: string longitude;
} coordinate;
现在,coordinate
是对象。还有一个问题,为什么在std
之后和::
之后输入空格?这是合法的,但很奇怪。
答案 1 :(得分:4)
您需要创建一个要添加到矢量中的实际变量:
int main ()
{
coordinate c;
c.latitude = latitude;
c.longitude = longitude;
previousPoints.push_back (c);
答案 2 :(得分:1)
coordinate.latitude = latitude;
您需要一个对象来访问它的成员,但coordinate
只是命名一个结构。另外在右侧你没有价值......你需要类似的东西:
coordinate c;
c.latitude = "120";
c.longitude = "10";
previousPoints.push_back(c);