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”的声明
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 成员 的排雷之路
错误:C2248:“QVariant::QVariant”:无法访问在“QVariant”类中声明的私有成员