在 C++ 中初始化对象向量

Sam*_*sel 0 c++ class vector object

我的问题如下:我有一个名为 City 的类,其中包含参数 Name、Latitude 和 Longitude。在我的主类中,我想用一些城市初始化一个向量。

这是我的城市头文件:

using namespace std;

#define RADIUS 6378.137
#define PI 3.14159265358979323846


class City {

public:
City(string _name, double _latitude, double _longitude) {
    name = _name;
    longitude = _longitude * PI / 180.0;
    latitude = _latitude * PI / 180.0;
}
~City() { };

private:
double longitude;
double latitude;
string name;
double earthRadius = RADIUS;
};
Run Code Online (Sandbox Code Playgroud)

然后是我的主类文件:

#include <iostream>
#include <vector>
#include "Route.h"

using namespace std;

vector<City> initRoute { (("Boston", 42.3601, -71.0589),
("Houston", 29.7604, -95.3698), ("Austin", 30.2672, -97.7431),
("San Francisco", 37.7749, -122.4194), ("Denver", 39.7392, -104.9903),
("Los Angeles", 34.0522, -118.2437), ("Chicago", 41.8781, -87.6298)) };

int main() {

    //for each(City city in initRoute)
        //city.printCity;

    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,它会抛出错误 C2398:

Error   C2398   Element "1": Die Conversion from "double" to  "unsigned int" 
requires a restrictive conversion.
Run Code Online (Sandbox Code Playgroud)

我感觉我的向量初始化是错误的,但我不知道要更改什么。

谢谢你的帮助 :)

Pra*_*ris 6

将对象添加到vector.

IE

vector<City> initRoute { City("Boston", 42.3601, -71.0589),
City("Houston", 29.7604, -95.3698), ... };
Run Code Online (Sandbox Code Playgroud)

或者

您可以使用{}来表示对象,而无需明确提及类,因为您的向量正在保存City对象(就像您使用structs所做的那样)。

IE

vector<City> initRoute { {"Boston", 42.3601, -71.0589},
    {"Houston", 29.7604, -95.3698}, ... };
Run Code Online (Sandbox Code Playgroud)