我在类模板中有两个构造函数,一个带有数组,一个带有 vector 作为参数。
我有指向给定参数的指针成员。
我必须重载 operator[] 并编写 size() 方法(每个方法只有一个),但我不知道如何区分给定的类型。
如何判断调用了哪个构造函数?
提前致谢。
template<typename T, typename F>
class view {
const T* arrayT;
const std::vector<T>* vectT;
size_t* sizeArray;
F functor{};
view(const T array[], rsize_t sze) {
arrayT = array;
sizeArray = &sze;
}
view(const std::vector<T> vect) {
vectT = &vect;
}
int size() const{
if( ?????){
return sizeArray;
} else {
return vecT-> size();
}
}
T view<T, F>::operator[](int index) const {
if(????) {
functor(arrayT[index]);
} else {
return functor(vectT->at(index));
}
}
最佳答案
如果你在做 c++17,我建议你看看 constexpr if
https://en.cppreference.com/w/cpp/language/if#Constexpr_If
这是一种新的语言功能,可以让您执行如果 在编译时。
关于c++ - 如何区分构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61932018/