C++友元类使用之前置声明(定义变量)
2016-09-29 10:23
309 查看
今天项目使用到了友元类,于是便先试着搞个简单地使用例子
#include<iostream>
class b;
class a
{
private:
int value;
protected:
void funprotected();
public:
friend b;
a(int x);
//b bclass;
void funpublic();
};
a::a(int x)
{
value = x;
}
class b
{
public:
void fun(a&);
};
void b::fun(a& aclass)
{
std::cout << aclass.value << std::endl;
}
int main()
{
a aclass(5);
b bclass;
bclass.fun(aclass);
return 0;
}
在程序编译时顺利通过,但是去掉其中注释后就会提示未定义的类型b,我查了一下,在实际定义类体之前,不能用该类型去定义变量,只能做声明,但是,我想这应该不算是定义变量吧,因为并没有分配内存,好吧,我已经被迫认为注释掉的那一行就是定义变量了。
#include<iostream>
class b;
class a
{
private:
int value;
protected:
void funprotected();
public:
friend b;
a(int x);
//b bclass;
void funpublic();
};
a::a(int x)
{
value = x;
}
class b
{
public:
void fun(a&);
};
void b::fun(a& aclass)
{
std::cout << aclass.value << std::endl;
}
int main()
{
a aclass(5);
b bclass;
bclass.fun(aclass);
return 0;
}
在程序编译时顺利通过,但是去掉其中注释后就会提示未定义的类型b,我查了一下,在实际定义类体之前,不能用该类型去定义变量,只能做声明,但是,我想这应该不算是定义变量吧,因为并没有分配内存,好吧,我已经被迫认为注释掉的那一行就是定义变量了。
相关文章推荐
- 解决多重定义问题/如何声明全局变量让多个cpp文件使用
- 使用extern声明外部定义的变量时不能赋值,只需声明变量
- 变量与类的 声明和 定义 在头文件中的使用
- js 函数定义,使用,作用域,变量声明提升,遇解析.....
- const常量用extern声明定义的问题(extern变量不能在使用类里初始化)
- 全局变量声明,定义与使用方法
- 变量的声明和定义的关系、extern关键字的使用
- 【C/C++开发】C++之enum枚举量声明、定义、使用与枚举类详解与枚举类前置类型声明
- 使用Polyhedron_3<Kernel> 声明和定义变量
- C++中重构函数声明定义与static变量使用方法
- 全局变量声明,定义与使用方法
- explicit 关键字用于声明必须使用强制转换来调用的用户定义的类型转换运算符
- 变量的定义与声明的区别
- JSP教程(三)-JSP中”预定义变量”的使用
- 使用typeof来定义变量(内核源码)
- JSP页面如何访问标签中定义的变量-使用实现
- 5章6节局部与全局使用同一个变量不同定义的调用
- genexus 变量的声明和使用[初学者关注]
- 定义和使用全局变量
- javascript中的变量如果没有定义就使用的话