2

代码:

#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

我错过了什么?

4

3 回答 3

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后面输入空格::?这是合法的,但很奇怪。

于 2012-08-04T11:14:04.213 回答
4

您需要创建一个要添加到向量中的实际变量:

int main ()
{
    coordinate c;
    c.latitude  = latitude;
    c.longitude = longitude;
    previousPoints.push_back (c);
于 2012-08-04T11:14:56.767 回答
1
coordinate.latitude  = latitude;

您需要一个对象来访问它的成员,但coordinate只需命名一个结构。同样在右侧,您没有价值...您需要类似的东西:

coordinate c;
c.latitude  = "120";
c.longitude = "10";
previousPoints.push_back(c);
于 2012-08-04T11:16:59.173 回答