【发布时间】:2018-12-08 14:54:30
【问题描述】:
我想看看如何从析构函数中访问构造函数的参数。在这个例子中,我想从构造函数中修改参数并在析构函数中恢复它。
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 declared in this scope。如何访问givenArray?
【问题讨论】:
-
可以在类中存储构造函数的参数
-
@Tyker 作为参考?
-
什么是
givenArray,为什么不是std::vector? -
@KorteAlma - 没有什么可以阻止引用成为类的成员,由构造函数初始化并由析构函数访问。当析构函数使用它时,由类的用户确保被引用的对象仍然存在(使用悬空引用(也就是对不再存在的对象的引用给出未定义的行为))。
标签: c++ oop templates constructor destructor