Namespaces compile error

What is wrong?

1ns2.h:24: error: 'NameSpace1' has not been declared

//test_nmspc.cpp
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <iostream>
#include <cstdlib>
#include "1ns1.h"

using namespace std;

int main(int argc, char *argv[])
{
NameSpace1::Class1NS1 c1ns1;

cout << "Hello, world!" << endl;

return EXIT_SUCCESS;
}

//1ns1.h
#ifndef NAMESPACE11NS1_H
#define NAMESPACE11NS1_H

#include "1ns2.h"

namespace NameSpace1 {

/**
@author Kaplenko Vitaliy <dij@zm.kh.ua>
*/
class Class1NS1{
public:
Class1NS1();

~Class1NS1();
void method1(NameSpace2::Class1NS2& c1ns2);

};

class Class2NS1{
public:
Class2NS1();

~Class2NS1();

};

}

#endif

//1ns1.cpp
#include "1ns1.h"

namespace NameSpace1 {

Class1NS1::Class1NS1()
{
}


Class1NS1::~Class1NS1()
{
}

Class2NS1::Class2NS1()
{
}


Class2NS1::~Class2NS1()
{
}


}

/*!
\fn NameSpace1::Class1NS1::method1(NameSpace2::Class1NS2& c1ns2)
*/
void NameSpace1::Class1NS1::method1(NameSpace2::Class1NS2& c1ns2)
{
/// @todo implement me
}

//1ns2.h
#ifndef NAMESPACE21NS2_H
#define NAMESPACE21NS2_H

#include "1ns1.h"

namespace NameSpace2 {

/**
@author Kaplenko Vitaliy <dij@zm.kh.ua>
*/
class Class1NS2{
public:
Class1NS2();

~Class1NS2();

};

class Class2NS2{
public:
Class2NS2();

~Class2NS2();
void method1(NameSpace1::Class2NS1& c2ns1);

};

}

#endif

//1ns2.cpp
#include "1ns2.h"

namespace NameSpace2 {

Class1NS2::Class1NS2()
{
}


Class1NS2::~Class1NS2()
{
}

Class2NS2::Class2NS2()
{
}


Class2NS2::~Class2NS2()
{
}

}


/*!
\fn NameSpace2::Class2NS2::method1(NameSpace1::Class2NS1& c2ns1)
*/
void NameSpace2::Class2NS2::method1(NameSpace1::Class2NS1& c2ns1)
{
/// @todo implement me
}
1ns1, 1ns2, 2ns1, 2ns2? These are the worst names I've ever seen.

There's circular inclusion between 1ns1.h and 1ns2.h.
Last edited on
Thank you for your reply, Mr. Helios.
Topic archived. No new replies allowed.