我想看看如何从析构函数访问构造函数的参数。在此示例中,我想修改构造函数中的参数并在析构函数中恢复它。
template<typename T>
class sorted_array_view {
public:
sorted_array_view(T* givenArray,size_t size) {
for( int idx = 0; idx < size; ++idx){
data.push_back(givenArray[idx]);
originaldata.push_back(givenArray[idx]);
}
std::sort(data.begin(), data.end());
for(int idx =0; idx<size; ++idx){
givenArray[idx] = data.at(idx);
}
}
~sorted_array_view(){
for(int idx =0; idx<size; ++idx){
givenArray[idx] = originaldata.at(idx);
}
}
private:
std::vector<T> data;
std::vector<T> originaldata;
};
但是我在析构函数中收到错误'givenArray' was not statements in this scope
。我如何访问givenArray
?
最佳答案
只需使 givenArray
成为该类的数据成员即可。
然后析构函数(以及任何其他成员函数)将可以访问它。
PS:如果它们的值相同(这似乎是您的代码的情况),请将析构函数中的 size
更改为 originaldata.size()
。否则,您也需要 size
才能成为数据成员。
关于c++ - 从析构函数访问模板类构造函数的参数,可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51101267/