请看看我以前的帖子在这里:问题与循环依赖,即使分开定义之后
Undefined type error even with forward declaration
我感动的定义,cpp文件,我仍然面对的课题。任何想法为什么?我的文件是这样的:
Header1.hpp
#ifndef HEADER1_HPP
#define HEADER1_HPP
namespace sample_ns
{
class sample_class{
public:
static int getNumber();
static void print();
};
}
#endif
Header2.hpp
#ifndef HEADER2_HPP
#define HEADER2_HPP
namespace sample_ns
{
class sample_class2{
public:
sample_class2();
int getNumber2();
};
}
#endif
Source1.cpp
#include "Header1.hpp"
#include "Header2.hpp"
#include "stdafx.h"
#include <iostream>
namespace sample_ns
{
int sample_class::getNumber()
{
sample_class2 obj;
return obj.getNumber2();
}
void sample_class::print()
{
std::cout << "Print utility function" << std::endl;
}
}
Source2.cpp
#include "Header2.hpp"
#include "Header1.hpp"
#include "stdafx.h"
#include <iostream>
namespace sample_ns
{
sample_class2::sample_class2()
{
sample_class::print();
}
int sample_class2::getNumber2()
{
sample_class::print();
return 5;
}
}
在我主我叫它为:
std::cout << sample_ns::sample_class::getNumber() << std::endl;
我得到 'sample_class2':未声明的标识符。我尝试添加class sample_class2;
但仍然给我的错误
编辑: 我的主要文件:
#include "stdafx.h"
#include <iostream>
#include "Header1.hpp"
int _tmain(int argc, _TCHAR* argv[])
{
std::cout << "hello" << std::endl;
std::cout << sample_ns::sample_class::getNumber() << std::endl;
return 0;
}
main.cpp是什么样子的? – NathanOliver
我认为你应该在cpp文件中使用“using namespace sample_ns”,而不是在该命名空间中定义函数。这可能不会解决问题,但它是很好的风格。 – GeneralFailure
它适用于我... –