-1

我有这个问题

"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]; 

它也不起作用

4

3 回答 3

1

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

“abc.h”

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

“abc.cpp”

#include "abc.h"         <--------------This!
void abc::fun(){
**xyz=new bool [10];
}
于 2013-06-23T09:20:41.247 回答
1

这个:

abc abc::*fun()

应该是这样的:

abc * abc::fun()
于 2013-06-23T10:14:45.127 回答
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???
}

这必须至少编译。


我注意到您发布的代码中有一些奇怪的事情。关键字class,public不以大写字母开头private

类声明后跟一个;.

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

abc::fun()不返回任何东西。

于 2013-06-23T10:18:30.527 回答