我们用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;
}
我再也无法改变班级的公共部分。谢谢!
答案 0 :(得分:0)
您的错误消息说明了问题。属性m_rowsOfVarArray
声明为private
,这意味着您无法从该类读取或在类外写入它。要解决此问题,您需要将其更改为public
或编写访问者函数以检索值。
答案 1 :(得分:0)
您必须编写或使用public
方法才能更改变量。
您使用private
来避免任何意外或未经授权的变量更改。因此,只有您的public
方法才能正确更改它。