前几天我在传递 动态二维数组的时候遇到了个问题  
把问题简化下如下:类A 指针**a(动态二维数组指针)
类B 指针**b,**c(动态二维数组指针)我把类A的**a给B ,B用**b接收 , 然后经过运算 出**c, 类A取**c程序运行时出错退出
当时是这么定义的变量
B.h内
class{
 public :
     **b;
     **c    
}
传递过去的参数**a,**b,**c数组里的东西都对 我跟踪过 可是返回的数组**c的时候不能接收到东西.
经过实验 问题出在接收数组**b上 假如把**b定义到 B.h的public就会出错
我更改了下。把**b定义在了cpp内部 如下格式
#include "B.h"
B::B()
{
}
B::~B()
{
}
int **b;
B::start()  //其他的函数
{
}
大家看。我把**b定义到了cpp内部 结果全部正确
这是为什么呢?
在cpp函数外面定义的东西 到底属于谁呢?public private?
高手帮忙 谢谢拉

解决方案 »

  1.   

    一般来说定义到cpp里的变量能够被该类的变量定义一下的代码引用
      

  2.   

    明白了 定义在cpp的变量基本就是全局私有吧..而且不属于某个类。.
    那为什么定义到类中的公有变量不错  而定义到cpp到对了呢?
    这是什么问题?
      

  3.   

    那这么说cpp里定义的变量和在类里定义没区别吗??只在本类中用到.不包含继承,类外用的情形
      

  4.   

    当然有区别啊。像你那样在cpp里定义的都是全局变量。
    在类里的都属于类的成员变量
      

  5.   

    这个问题明白了。.就是static 
    可是我程序出错的问题还不清楚啊.
    为什么用成员变量出错呢?
    我用成员变量的时候确实加上对象了啊。
      

  6.   

    全局变量。.在自己类内部用。.cpp里面声明后 直接随便用就成
    要是类外面必须加上extern int 变量名 ;
    这是一个用法.