在abc.h中声明的C ++类变量在abc.cpp中无法识别

时间:2013-06-23 09:14:47

标签: arrays class oop c++11 struct

我有这个问题

"abc.h"

Class abc{
Private:    

  bool ** xyz;

Public:
abc * fun();
}

"abc.cpp"

#include "abc.h"

abc abc::*fun(){
xyz=new bool*[10];
    for(int i=0;i<10;i++)
    {
    xyz[i]= new bool[10];
    }
}

我正在获取 xyz未声明的标识符。请帮助我。我也试过

abc::xyz=new bool*[10]; 

它也无法正常工作

3 个答案:

答案 0 :(得分:1)

编译器需要查看类型abc的定义,为此,您需要包含在cpp文件中定义它的标头。

<强> “abc.h”

class abc{
bool ** xyz;
void fun();
};

<强> “abc.cpp”

#include "abc.h"         <--------------This!
void abc::fun(){
**xyz=new bool [10];
}

答案 1 :(得分:1)

这:

abc abc::*fun()

应该是这样的:

abc * abc::fun()

答案 2 :(得分:0)

您显示的代码无法提供您发布的错误消息。


将此文件放入头文件中:

class abc {
  public:
    abc* fun();
  private:    
    bool ** xyz;
};

将其完全放入源文件中:

#include "abc.h"

abc* abc::fun() {
  xyz=new bool*[10];
  for(int i=0;i<10;i++)
  {
    xyz[i]= new bool[10];
  }
  return this; // What would you like to return???
}

这必须至少编译。


我发现你发布的代码中有一些奇怪的东西。关键字classpublicprivate 以大写字母开头。

类声明之后是;

虽然可能存在abc abc::*fun(),但我几乎可以肯定您的意思是abc* abc::fun()

abc::fun()不返回任何内容。