访问成员函数中的私有成员时出错

时间:2015-01-29 22:28:08

标签: c++

我在一个正在发展的课堂上有一个奇怪的问题。当我尝试在类成员函数中访问类的一些私有成员时,我收到以下错误

error: 'double** LinAlg::Matrix<double>mat' is private

生成它的代码的一些示例:

//Class private declaratios

template <typename T>
class C
{
     public:
     template <typename U>
     C<T> operator+(C<U> rhs);

     private:
     T member;
}

template <typename T> template <typename U>
C<T> C::operator+(C<U> rhs)
{
     return this->member + rhs.member;
}

对不起,请帮助我。

@Edit:我在一些使用两个模板的成员函数中得到错误。

1 个答案:

答案 0 :(得分:0)

我懂了!感谢评论的信息,它像user657267和George Houpis说的那样。如果T和U来自不同的类型,那么,他们来自不同的类,说,我需要的是提供一些其他方式来访问私人成员,这样的事情可能会有所帮助:

template<typename T>
class C
{
     public:
     template<typename U>
     C<T> operator+(C<U> rhs);
     T getMember() {return this->member;};

     private:
     T member;
}

template<typename T> template<typename U>
C<T> C::operator+(C<U> rhs)
{
     return this->member + rhs.getMember();
}