用作初始化程序的错误数组,我不知道错误
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错误,但是我不知道错在哪里,求指