友元函数的问题
我运行下面的代码,提示
c:\users\002546\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(33): error C2248: “A::m_ia”: 无法访问 private 成员(在“A”类中声明)
1> c:\users\002546\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(27) : 参见“A::m_ia”的声明
1> c:\users\002546\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(8) : 参见“A”的声明
有点不明白了,请大侠帮忙啊!
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
- C/C++ code
#include <stdlib.h>#include <iostream>using namespace std;#include "stdafx.h"class A{ public: A() { m_ia = 0; printf("A()\n"); } A& operator=(const A &a) { printf("=\n"); // return 0x00; } friend void dispaly1(A&a1);private: int m_ia;};void display1(A a1){ //printf("\n%d\n",a.m_ia); cout << a1.m_ia << endl;}int main(void){ A a; A b; a = b; display1(b); getchar(); return 0;}[解决办法]
两个问题。
1、类中的display拼错了。。。
2、声明里形参是引用,定义的地方形参也要写成引用,否则就变成了函数重载。
[解决办法]
friend void dispaly1(A&a1);
private:
int m_ia;
};
void display1(A a1)