后续代码在 Eclipse 上运行正常,但是当我在 Dev C++ IDE 上运行时,出现后续错误;
City.cpp:6: 错误:'{' 标记前需要主表达式
City.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"};
}
最佳答案
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 的支持,否则,您可能需要在构造函数的主体中逐一分配每个元素。
关于c++ - '{' 标记错误之前的预期主表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43651813/