我在一个正在发展的课堂上有一个奇怪的问题。当我尝试在类成员函数中访问类的一些私有成员时,我收到以下错误
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:我在一些使用两个模板的成员函数中得到错误。
答案 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();
}