請看看我以前的帖子在這裏:問題與循環依賴,即使分開定義之後
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
它適用於我... –