错误:'。'标记之前的预期unqualified-id - std :: vector

时间:2012-08-04 11:10:16

标签: c++ vector std

代码:

#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

我错过了什么意思?

3 个答案:

答案 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);