后续代码可以在Eclipse中正常运行,但是当我在Dev C ++ IDE上运行时,我遇到了错误;
City.cpp:6:错误:在'{'标记
之前预期的primary-expressionCity.h
#include <string>
using namespace std;
#ifndef CITY_H
#define CITY_H
class City
{
public:
City();
string arrCity[10];
};
#endif // CITY_H
City.cpp
#include <string>
#include "City.h"
City::City()
{
arrCity[10] = {"Tbilisi", "Batumi", "Kutaisi", "Gori", "Poti"};
}
答案 0 :(得分:3)
arrCity[10] = {"Tbilisi", "Batumi", "Kutaisi", "Gori", "Poti"};
没有达到您的预期。它试图通过支撑的初始化列表分配arrCity[10]
(即std::string
);这是行不通的。它已经脱离了数组的界限。
请注意,无法直接分配数组,您可以使用成员初始化列表对其进行初始化,如:
City::City() : arrCity {"Tbilisi", "Batumi", "Kutaisi", "Gori", "Poti"}
{
}
或使用默认成员初始值设定项:
class City
{
public:
City();
string arrCity[10] = {"Tbilisi", "Batumi", "Kutaisi", "Gori", "Poti"};
// or
string arrCity[10] {"Tbilisi", "Batumi", "Kutaisi", "Gori", "Poti"};
};
请注意,上述两种解决方案都需要C ++ 11支持,否则,您可能需要在构造函数体中逐个分配每个元素。