用作初始化程序的错误数组,我不知道错误

Posted

技术标签:

【中文标题】用作初始化程序的错误数组,我不知道错误【英文标题】:Error array used as initializer and i don't know the error 【发布时间】:2013-10-13 15:46:41 【问题描述】:

失败是在类 manejo.cpp 的构造函数中,错误是“manejo.cpp:3:16: error: array used as initializer”,我不知道这个错误在哪里。

下面附上manejo.hpp类的源码和manejo.cpp的实现,谢谢

#include "manejo.hpp"

manejo::manejo()
manejo::~manejo()

Hpp

#ifndef __MANEJO_HPP
#define _MANEJO_HPP

#include <iostream>
#include <fstream>
#include <vector>
#include <string>

using namespace std;
using std::vector;
using std::string;

class manejo

private:

     char cadena[128]="";
     vector <string> linea;
     long cantidadPD = 0;
     vector <string> palabras;
     int Creglas = 0;
     vector <string> reglas;
     long atoi(const char *str);


public:

     manejo();
     ~manejo();
     void EstablecerVariables();
     int StoInt (string numero);

;

#endif 

【问题讨论】:

char cadena[128]=""; 你不能这样做。你真的尝试用谷歌搜索你得到的错误吗? 你的编译器支持 C++11 吗?如果不是,您不能在声明时初始化非静态数据成员(就像您对cadena 所做的那样)。顺便说一句,检查你的包含警卫,不要使用双下划线。这些是为实现保留的。 【参考方案1】:

这个

 char cadena[128]="";

在传统 C++ 中是不合法的(在 C++11 中是合法的,但显然你没有使用它,否则你不会得到这个错误)。删除="",在你的构造函数中初始化数据成员,而不是在你的类中。例如

manejo::manejo()

    cadena[0] = '\0';
    ...

【讨论】:

类内初始化自 C++11 起合法。 @BartoszKP:没关系。答案应该提到它从 C++11 开始有效。 现在,“传统 C++” 是什么意思? @Nawaz 显然这是我知道的 C++ @BartoszKP 它可能就像 OP 查看一些当前的 C++ 示例一样简单,并且有一个不符合标准的编译器,或者一个需要被告知使用 C++11 的编译器。他们无法编译 C++11 并不意味着他们不想使用它。

以上是关于用作初始化程序的错误数组,我不知道错误的主要内容,如果未能解决你的问题,请参考以下文章

我的应用程序不断崩溃,大概是因为空对象引用错误,但我不知道为啥

tomcat打开localhost:8080/xx嗯时候报告404错误,但是我不知道错在哪里,求指

运行天气应用程序时出现此错误我正在使用 json 和 http 库来获取数据但我不知道为啥会出现此错误

网络表单中的此插入查询引发错误,我不知道为啥

我不知道为啥会发生错误[重复]

运行应用程序时应用程序崩溃。我不知道为啥?