【发布时间】:2012-11-23 11:26:19
【问题描述】:
我有以下类,我尝试访问基类的受保护成员,但在 eclipse 中出现错误“无法解析字段分解”。有人可以向我解释我做错了什么吗?为什么我无法访问变量mFactorized ??
基类
template <typename ValueType>
class AbstractDirectLinearSolver{
protected:
bool mFactorized;
public:
//Constructors, destructor
AbstractDirectLinearSolver(){
mFactorized = false;
}
virtual ~AbstractDirectLinearSolver();
//Methods
virtual void Solve(Vector<ValueType>& x, const Vector<ValueType>& b) const = 0;
virtual void Factorize(AbstractMatrix<ValueType>& A) = 0;
};
派生类
#include "AbstractDirectLinearSolver.hpp"
template<typename ValueType>
class CholeskySolver: public AbstractDirectLinearSolver {
private:
AbstractMatrix<ValueType> *mR; //Pointer = Abstract class NOT ALLOWS instantiation !!
public:
CholeskySolver() {
mR = NULL;
}
~CholeskySolver() {
if (this->mFactorized) { //ERROR HERE
delete mR;
}
}
void Solve(const Vector<ValueType>& x, const Vector<ValueType>& b) {
Vector<ValueType> y(mR->ApplyLowInv(b));
x = mR->ApplyLowerTransponse(y);
}
void Factorize(AbstractMatrix<ValueType>& A) {
if (mR != NULL)
delete mR;
mR = NULL;
A.CholeskyFactorization(mR);
this->mFactorized; //ERROR HERE
}
};
【问题讨论】:
-
您是否真的从两行中都得到了错误,或者只是第一行您忘记了变量名上奇怪的伪匈牙利疣 (
m)?如果是这样,第二个错误到底是什么? -
第一次忘记把
m放在Factorized之前。更改后,eclipse 用Field mFactorized could not be resolved标记这些行 -
所以这不是编译问题?是 IDE 问题?
-
你的编译器是在抱怨,还是只是 Eclipse?
-
嗯,我认为这是一个IDE问题,因为我编译它并且没有错误。
标签: c++ eclipse inheritance protected