2017-05-07 162 views
1

我正在写一个类BitVector,其中有一个返回BitVector容量的方法。我的想法是调用std :: vector容量(),但是我得到一个我有点困惑的错误。下面是我的方法:指针向量的大小

int BitVector::Size() { 
int size = (int) this->bitVector().capacity(); 
} 

我遇到的错误是“视呼叫的表达出发括号必须有(指针TO-)函数类型什么是这里的问题

其他背景信息?我的等级:

我的位向量类有通常的公共构造函数,deconstructors等,然后私人指针向量如下:

private: 
std::vector<uint8_t>* bitVector; 

在我的构造,我点的指针向量堆上像这样:

BitVector::BitVector(int numBits) { 
this->bitVector = new std::vector<uint8_t> (numBits, 0); 
} 
+0

'bitVector'是一个指针,它必须被废弃时,'这个 - >位向量()容量();' - >'位向量() - >容量();' 。 – George

+4

你真的需要使用指向你的矢量的指针吗? – Galik

+0

可能不会,只有载体会更有意义吗?不过,我确实需要它。所以我认为指针是有意义的?非常新的C++程序员!感谢您的建议 – Vic

回答

1

bitVector只是一个成员,而不是一个函数。这也是一个指针。

int size = (int)this->bitVector->capacity();

此外,注意,std::vector<bool>already specialized成位向量(使用每BOOL 1位),所以你重新发明轮子。

+0

谢谢!所以我不认为我理解bitVector.capacity()和bitVector-> capacity()之间的区别。我认为 - >意思是解除引用。 – Vic

+0

它的确如此。你的'bitVector'是一个指针,所以你必须尊重它来访问它的任何成员。 – Donnie

2

我不相信你需要一个指针在这里,只是声明为:

private: 
std::vector<uint8_t> bitVector; 

你不需要this->前缀访问类的成员,而int是不是一个很好的类型来表达能力值(什么是价值是负面的能力的手段?)。所以,在你的函数我会做:

int BitVector::Size() { 
    auto size = bitVector.capacity(); 
} 

但如果真的需要一个指针,你可以这样做:用指针derreference

编辑

尖的

int BitVector::Size() { 
    auto size = bitVector->capacity(); 
} 

通过@Donnie,这个函数的返回类型也是错误的。如果您使用的是C++ 14,并且假设您想要返回size变量,那么只需让编译器使用bitvector.capacity()正在使用的值来保存其值即可。所以,你的功能应该是:

auto BitVector::Size() { 
    auto size = bitVector.capacity(); 
    return size; 
} 
+0

你应该从这些函数中返回一些东西。 – Donnie