-1

我的多个类文件项目存在分段错误问题。

如果不创建空类和指针,我会得到“XXX 没有命名类型”错误。

我该如何解决这个问题或以另一种方式做到这一点?我不能在 A 类中达到 AA 类。

主文件

#include "A.h"

A a;

int main() {
    while(true) {

    }
    return 1;
}

#ifndef A_H_
#define A_H_

class AA;

#include "AA.h"

class A {
public:
    A();
    virtual ~A();

    AA *aa;
    void run();
};

#endif /* A_H_ */

A.cpp

#include "A.h"


A::A() {
    // TODO Auto-generated constructor stub

}

A::~A() {
    // TODO Auto-generated destructor stub
}

void A::run() {
    aa->run();
}

AA.h

#ifndef AA_H_
#define AA_H_

#include <iostream>

class AA {
public:
    AA();
    virtual ~AA();

    void run();
};

#endif /* AA_H_ */

AA.cpp

#include "AA.h"

AA::AA() {
    // TODO Auto-generated constructor stub

}

AA::~AA() {
    // TODO Auto-generated destructor stub
}

void AA::run() {
    std::cout << "1";
}
4

1 回答 1

3

您只需要在 A.cpp 中包含 AA.h。

这是一个很常见的场景。当您的界面需要一件事而您的实现需要其他东西时。并非所有包含都应在 .h 文件中完成。这也不应该产生段错误,它不应该编译。

同样,您在 .h 文件中包含 iostream,您在 .cpp 文件中使用它,为什么不将它包含在其中呢?

重读:您没有构建您的 aa 对象。发出一个

aa = new AA();

或在您的构造函数中类似。当前,您正在尝试访问尚未构造的对象。

于 2012-06-18T18:43:02.013 回答