c++ - '{' 标记错误之前的预期主表达式

标签 c++ arrays initialization dev-c++ c++03

后续代码在 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/

相关文章:

c - 在指定符以严格递增的方式初始化元素后元素是否存在?

C++ 碰撞检测在最后一次检查时不起作用?

arrays - 当没有两个元素相邻时,如何获取用于查找数组元素最大总和的数字/索引

c - 如何在c中创建没有数据库的多变量数组

c - 在 C 数组中的每个元素之间插入一个数字

java - 如何检查int是否已初始化?

c++ - 队列 vector

c++ - 我可以使用 VS2008 的 C++ 编译器使用 VS2010 并且仅使用 Server 2008 Platform SDK 进行编译吗?

c++ - QMenuBar 不使用原生样式? C++,QT设计器。用户界面

tomcat Jersey servlet 初始化