我正在编写一个 BitVector 类,其中有一个返回 BitVector 容量的方法。我的想法是调用 std::vectorcapacity(),但我收到一个错误,我有点困惑。下面是我的方法:
int BitVector::Size() {
int size = (int) this->bitVector().capacity();
}
我遇到的错误是“表观调用的表达式进行括号必须具有(指向)函数类型。这里有什么问题?
有关我的类(class)的其他背景信息:
我的 BitVector 类具有通常的公共(public)构造函数、解构函数等,然后是一个指向 vector 的私有(private)指针,如下所示:
private:
std::vector<uint8_t>* bitVector;
在我的构造函数中,我将指针指向堆上的 vector ,如下所示:
BitVector::BitVector(int numBits) {
this->bitVector = new std::vector<uint8_t> (numBits, 0);
}
最佳答案
我不认为你需要一个指针,只需将其声明为:
private:
std::vector<uint8_t> bitVector;
您不需要 this->
访问类成员的前缀,以及 int
不是表达容量值的好类型(值为负的容量意味着什么?)。所以,在你的函数中我会这样做:
int BitVector::Size() {
auto size = bitVector.capacity();
}
但如果确实需要一个指针,你可以这样做:
int BitVector::Size() {
auto size = bitVector->capacity();
}
使用指针引用
已编辑
正如@Donnie所指出的,该函数的返回类型也变得错误。如果您使用 C++14,并假设您想返回 size
变量,只需让编译器使用 bitvector.capacity()
即可让您的生活变得简单正在使用来保持其值(value)观。所以你的函数应该是:
auto BitVector::Size() {
auto size = bitVector.capacity();
return size;
}
关于c++ - 指针 vector 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834800/