静态int数组中的类问题
static int array in a class problem
下面三个代码块分别是main.cpp、static_class_array.cpp和static_class_array.h。我得到以下错误:
static_class_array.cpp||In constructor 'static_array_class::static_array_class()':|
static_class_array.cpp|5|error: cannot convert '<brace-enclosed initializer list>' to 'int' in assignment|
||=== Build finished: 1 errors, 0 warnings ===|
#include "static_class_array.h"
int main()
{
static_array_class* array_class;
array_class = new static_array_class();
delete array_class;
return 0;
}
#include "static_class_array.h"
static_array_class::static_array_class()
{
static_array_class::array[3] = {0,1,2};
}
static_array_class::~static_array_class(){}
#ifndef STATIC_CLASS_ARRAY_H
#define STATIC_CLASS_ARRAY_H
class static_array_class
{
private:
static int array[3];
public:
static_array_class();
~static_array_class();
};
#endif
我认为你在实现文件中想要的是:
static_array_class::static_array_class()
{
}
static_array_class::~static_array_class(){}
int static_array_class::array[3] = {0,1,2};
错误信息解释
在提交的代码中"不能将'大括号括起来的初始化列表'转换为'int'任务"
。
这是因为代码:static_array_class::array[3] = {0,1,2};
被解释为表示{0,1,2}
应赋值给数组中的元素3
。元素3
的类型是int
,(顺便说一下,没有分配为第四个元素),因此如下所示:
int i = 0;
i = {0,1,2};
它们不是同一种类型;
你的类是一个包含一个数组的类——它们只是一个数组。
对于类成员的静态定义,您需要在类外部声明实际实例,就像使用其他静态定义一样,
int static_array_class::array[3] = {0,1,2}; // note this line is outside the constructor
static_array_class::static_array_class()
{
}
static_array_class::~static_array_class(){}
相关文章:
- 指针问题:从不兼容的类型"int"分配给"int *"
- 替代在python中制作邻接列表与图形问题的字典?(如 C++ 中的 vector<vector<int&g
- C++初始化具有 int 0 问题的unique_ptr
- 我正在编写一个代码来将 int 数组存储在文件中,然后用 c++ 检索它,但是检索第一项是假值,我该如何解决这个问题?
- 调用 Parse int 函数时编译 parse 整数程序时出现问题
- C++ 标准::矢量<int>问题
- 当我向 vector<int *> 添加元素时,我遇到了一些问题
- 无符号int的比较始终是正确的(NPOS问题?)
- C++. 面试. 关于返回 int* 值问题的范围
- 将输入分配给字符串,int数组和int的问题
- 从ints向量删除int的问题
- 将字符串转换为 int 问题
- C++ vector<pair<int,int>> std::all_of() 函数问题(重定向到头文件)
- 将功能与"int main"问题分开(初学者)
- 类型转换<int>的舍入问题
- openssljava到c++读取int问题
- 矢量字符串、int 和 dword 问题
- 使用 int*&通过引用传递指针会导致奇怪的问题
- int*&x 的问题
- const int&performance 问题