【发布时间】:2018-10-09 15:50:34
【问题描述】:
我的问题如下:我有一个名为 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;
};
然后是我的主类文件:
#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;
}
当我尝试编译时,它会显示错误 C2398:
Error C2398 Element "1": Die Conversion from "double" to "unsigned int"
requires a restrictive conversion.
我感觉我的向量初始化是错误的,但我不知道要改变什么。
感谢您的帮助:)
【问题讨论】:
-
创建
City对象使用例如City("Boston", 42.3601, -71.0589)。并删除额外的一对括号()包裹它。 -
将您的
()更改为{}。列表初始化需要{} -
您可以做的一件事是尝试弄清楚如何使用 one 元素初始化向量,然后再将问题与整个元素列表复杂化。