Considere los dos escenarios siguientes (editado sólo para completar toda la cuestión y hacerlo más claro)Declaración vs progreso se cuentan las
Caso 1: (duerma compile como acertadamente menciona a continuación)
//B.h
#ifndef B_H
#define B_H
#include "B.h"
class A;
class B {
A obj;
public:
void printA_thruB();
};
#endif
//B.cpp
#include "B.h"
#include <iostream>
void B::printA_thruB(){
obj.printA();
}
//A.h;
#ifndef A_H
#define A_H
#include "A.h"
class A {
int a;
public:
A();
void printA();
};
#endif
//A.cpp
#include "A.h"
#include <iostream>
A::A(){
a=10;
}
void A::printA()
{
std::cout<<"A:"<<a<<std::endl;
}
//main.cpp
#include "B.h"
#include<iostream>
using namespace std;
int main()
{
B obj;
obj.printA_thruB();
}
Caso 2: (las únicas modificaciones ... funciona sin error compiliation)
//B.h
#include "A.h" //Add this line
//class A; //comment out this line
Supongamos tanto el a.cpp y B.cpp se cumplen juntos. ¿Los dos escenarios anteriores hacen alguna diferencia? ¿Hay alguna razón para preferir un método sobre el otro?
Edit: Entonces, ¿cómo puedo hacer que el escenario 1 funcione.
Has compilado A.cpp y B.cpp juntos, pero ¿qué has hecho con A.h y B.h? –
@Dennis Hizo la pregunta más clara para usted – Sii