C++ error c2248

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ error c2248相关的知识,希望对你有一定的参考价值。

各位大神帮忙看看问题错在哪。。。。

#include <iostream>
using namespace std;
const int MAX=10;
class COMMUS

char name[MAX];
char num[MAX];
public:
friend istream &operator>> (istream &,COMMUS &);
friend ostream &operator<< (ostream &,const COMMUS &);

;
ostream &operator<<(ostream &outt,COMMUS &co1)

outt<<"name:"<<co1.name<<endl;
outt<<"num:"<<co1.num<<endl;
return outt;

istream &operator>> (istream &inn,COMMUS &co2)

cout<<""<<endl;
inn>>co2.name;
inn>>co2.num;
return inn;


int main()

cout<<"请依次输入姓名,联系电话"<<endl;
COMMUS NO1;
cin>>NO1;
cout<<NO1;
return 0;


c:\users\qiang\documents\实验品\4_12bad1\4_12bad1\4_12bad1.cpp(20): error C2248: “COMMUS::name”: 无法访问 private 成员(在“COMMUS”类中声明)
1> c:\users\qiang\documents\实验品\4_12bad1\4_12bad1\4_12bad1.cpp(11) : 参见“COMMUS::name”的声明
1> c:\users\qiang\documents\实验品\4_12bad1\4_12bad1\4_12bad1.cpp(10) : 参见“COMMUS”的声明
1>c:\users\qiang\documents\实验品\4_12bad1\4_12bad1\4_12bad1.cpp(21): error C2248: “COMMUS::num”: 无法访问 private 成员(在“COMMUS”类中声明)
1> c:\users\qiang\documents\实验品\4_12bad1\4_12bad1\4_12bad1.cpp(12) : 参见“COMMUS::num”的声明
1> c:\users\qiang\documents\实验品\4_12bad1\4_12bad1\4_12bad1.cpp(10) : 参见“COMMUS”的声明

参考技术A #include <iostream>
using namespace std;
const int MAX=10;
class COMMUS;
istream &operator>> (istream &,COMMUS &);
ostream &operator<< (ostream &,const COMMUS &);
class COMMUS

public:
char name[MAX];
char num[MAX];
public:
friend istream &operator>> (istream &,COMMUS &);
friend ostream &operator<< (ostream &,const COMMUS &);

;
ostream &operator<<(ostream &outt,const COMMUS &co1)
 
outt<<"name:"<<co1.name<<endl;
outt<<"num:"<<co1.num<<endl;
return outt;
 
 istream &operator>> (istream &inn,COMMUS &co2)
 
cout<<""<<endl;
inn>>co2.name;
inn>>co2.num;
return inn;
 

int main()

cout<<"请依次输入姓名,联系电话"<<endl;
COMMUS NO1;
    cin>>NO1;
cout<<NO1;
return 0;

参考技术B public: char name[MAX];
public: char num[MAX];
另外,main中 cin>>NO1模糊
cin>>NO1.num追问

不是已经定义友元了么,为什么还是不能访问私有成员??
麻烦详细说说。。。

追答

问题在于public位置放在了变量下面,public 上面的变量仍是private
char name[MAX];
char num[MAX];
public:

追问

public放下边就是为了实现数据隐藏,但是可以使用友元来打破这种限制,我想知道为什么即使声明了友元,也不能访问私有成员???
麻烦再说说。。。

追答

private表示成员只能被本类的对象访问,你也可以在类中定义public方法来访问。但不能被外部访问。

本回答被提问者采纳

以上是关于C++ error c2248的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2012 中编译启用 CLR 的 C++ 项目时出现 C2248 错误

派生类成员函数调用时 error C2248: 无法访问 protected 成员 的排雷之路

QT-MSVC 错误 C2248

错误:C2248:“QVariant::QVariant”:无法访问在“QVariant”类中声明的私有成员

qt 环境下mapx组件打包后编译产生c2248和c2512错误

带有 std::thread 的 MVSE12 中的错误 C2248