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オブジェクトです。そして、1つの質問、なぜ前後にスペースを入力するの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 に答える