/*
* ArrayOfBit.h
*
* Created on: 23 mai 2015
* Author: pierre-antoine
*/
#ifndef ARRAYOFBIT_H_
#define ARRAYOFBIT_H_
namespace nsBitVector
{
typedef unsigned char byte_t;
typedef unsigned short int UInt16;
class ArrayOfBit
{
private:
UInt16 m_Size;
UInt16 m_RealSize;
byte_t *array = 0;
// I initialised the pointer to 0 according to what I've read
//not letting a pointer non-initialised
public:
ArrayOfBit (UInt16 bits);
~ArrayOfBit ();
UInt16 size () const noexcept;
UInt16 MaxSize () const noexcept;
UInt16 operator[] (UInt16 index) noexcept;
};
}
#endif /* ARRAYOFBIT_H_ */
/*
* ArrayOfBit.cpp
*
* Created on: 23 mai 2015
* Author: pierre-antoine
*/
#include "ArrayOfBit.h"
//some macros to go faster.
typedef unsigned short int UInt16;
typedef unsigned char byte_t;
/**
*
*/
nsBitVector::ArrayOfBit::ArrayOfBit (UInt16 bits) :
m_Size (bits), m_RealSize ((UInt16) (bits + 7) / 8)
{
//HERE IS THE LINE WHICH PROVOKES ERROR :
byte_t *array[] = new byte_t [m_RealSize] {0};
//m_RealSize is a unsigned short int of the size of the array needed
//calculated. if need 12 bits, take (12 + 7 = 19 bits / 8 = 2 bytes)
}
nsBitVector::ArrayOfBit::~ArrayOfBit ()
{
delete[] array;
}
UInt16 nsBitVector::ArrayOfBit::size() const noexcept
{
return m_Size;
}
UInt16 nsBitVector::ArrayOfBit::MaxSize() const noexcept
{
return m_RealSize;
}
UInt16 nsBitVector::ArrayOfBit::operator[] (UInt16 index) noexcept
{
return (UInt16) (*array & ((0b1) << index));
}
我从中得到3个错误:
1) ../src/ArrayOfBit.cpp: In constructor
‘nsBitVector::ArrayOfBit::ArrayOfBit(nsBitVector::UInt16)’:
../src/ArrayOfBit.cpp:21:49: erreur:
initializer fails to determine size of ‘array’
为什么会失败? 我无法在其他帖子上获得有关如何使其发挥作用的有效答案。
2) ../src/ArrayOfBit.cpp:21:49: erreur:
array must be initialized with a brace-enclosed initializer
这个我没有得到,因为在零附近有花括号。
3) ../src/ArrayOfBit.cpp:21:13: attention :
unused variable ‘array’ [-Wunused-variable]
这个我也得不到,因为我以后会使用这个数组。
现在,这个类的目标是被包装以进行一些设置,而不是使用3个整数字节来表示3个布尔值。 稍后,我计划将其扩展到我想要的任何大小,比如3位变量字段。
这就是为什么我不使用STL的容器。 问题不是关于功能,而是编译:一旦我可以编译,我将能够开始单元测试
需要说明的是,如果错过了宏行,则byte_t是unsigned char,而UInt16是unsigned short int。
感谢您阅读我的帖子。
我想在计划世界中添加我是新生儿。