错误C2248无法访问类中声明的私有成员

时间:2015-05-25 15:09:58

标签: c++ visual-studio-2010 class friend-function

我们用c ++练习了。老师在“类分配”的公共部分给了我们函数(所以我不能改变header.h中函数的公共声明)。当我试图建立一个朋友cout函数时,我得到了一个编译错误:编译器说“错误4错误C2248:'biumath :: Assignment :: m_rowsOfVarArray':无法访问类'biumath :: Assignment'中声明的私有成员”。我认为问题在于命名空间。

biumath.h

#ifndef BIUMATH_H
    #define BIUMATH_H
    #include <iostream>
    #include <string>
    //using namespace std;

    namespace biumath
    {
    class Assignment
    {
    private:
        int **m_varArray;
        int m_rowsOfVarArray;
    public:
         Assignment(); //1
         Assignment(char symbol, double value); //2
         bool containsValueFor(char symbol) const; //3
         double valueOf(char symbol) const; //4
         void add(char symbol, double val); //5
        friend std::ostream& operator<< (std::ostream& out,
            const Assignment& assignment); //6
        };
    }
    #endif

biumath.cpp

#include <iostream>
#include "biumath.h"
using namespace biumath;
using namespace std;
std::ostream& operator<< (std::ostream& out,
        const Assignment& assignment)
{
        out<<assignment.m_rowsOfVarArray<<std::endl;
        //return the stream. cout print the stream result.
        return out;
}

我再也无法改变班级的公共部分。谢谢!

2 个答案:

答案 0 :(得分:0)

您的错误消息说明了问题。属性m_rowsOfVarArray声明为private,这意味着您无法从该类读取或在类外写入它。要解决此问题,您需要将其更改为public或编写访问者函数以检索值。

答案 1 :(得分:0)

您必须编写或使用public方法才能更改变量。 您使用private来避免任何意外或未经授权的变量更改。因此,只有您的public方法才能正确更改它。