컴파일러에서 정의한 네임 스페이스를 찾지 못했습니다. 네 개의 파일과 세 개의 네임 스페이스가 있습니다.컴파일러에서 네임 스페이스를 찾을 수 없습니다.
charon.cpp
chin.cpp
chout.cpp
MAIN.CPP
내 네임 스페이스 카론되어, charon_in 및 charon_out. 주요한 문제는 특정 파일 인 charon.cpp에서 발생합니다. 따라서이 파일과 chin.cpp도 있습니다.
오류 :
g++ -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/sys/charon.o.d -o build/Debug/GNU-Linux-x86/sys/charon.o sys/charon.cpp
sys/charon.cpp:6:17: error: ‘charon_in’ is not a namespace-name
sys/charon.cpp:6:26: error: expected namespace-name before ‘;’ token
sys/charon.cpp:7:17: error: ‘charon_out’ is not a namespace-name
sys/charon.cpp:7:27: error: expected namespace-name before ‘;’ token
sys/charon.cpp:15:5: error: ‘chout_’ does not name a type
sys/charon.cpp:16:5: error: ‘chin_’ does not name a type
sys/charon.cpp: In constructor ‘charon::charon_::charon_()’:
sys/charon.cpp:31:39: error: ‘chin_’ has not been declared
sys/charon.cpp:31:55: error: ‘engine_input’ was not declared in this scope
sys/charon.cpp:32:40: error: ‘chout_’ has not been declared
sys/charon.cpp:32:57: error: ‘engine_output’ was not declared in this scope
charon.cpp
#include <iostream>
#include <boost/thread.hpp>
#include <boost/date_time.hpp>
using namespace std;
using namespace charon_in;
using namespace charon_out;
namespace charon
{
class charon_
{
private:
chout_ engine_output;
chin_ engine_input;
boost::thread input_thread;
boost::thread output_thread;
void start_threads();
void stop_threads();
public:
charon_();
charon_(const charon_& orig);
~charon_();
};
charon_::charon_(){
input_thread = new boost::thread(&chin_::refresh, engine_input);
output_thread = new boost::thread(&chout_::refresh, engine_output);
}
};
chin.cpp
/*
* File: chin.cpp
* Author: josh
*
* Created on 08 April 2012, 10:00
*/
#include <iostream>
#include <borland/conio.h>
#include <ncurses.h>
#include <deque>
#include <boost/thread.hpp>
using namespace std;
using namespace charon;
using namespace charon_out;
namespace charon_in
{
class chin_
{
private:
bool pause;
iostream key_sequence;
deque<char> key_queue;
charon_* engine;
inline iostream grab();
public:
chin_(const charon_& handle);
chin_(const chin_& orig);
~chin_();
void refresh();
bool stop_check();
};
chin_::chin_(const charon_& handle) {
engine = handle;
pause = false;
}
chin_::chin_(const chin_& orig) {
}
chin_::~chin_() {
}
inline iostream chin_::grab(){
iostream ret;
ret << getch();
return ret;
}
void chin_::refresh(){
while((kbhit() != 0) && (key_queue.size() < 10))
{
char t = getch();
key_queue.push_back(t);
}
}
bool chin_::stop_check(){
return pause;
}
};
그래서이 코드는, 내가 트리플 모든 것을 확인했다. 넷빈의 클래스 브라우저에서 네임 스페이스를 볼 수도 있습니다. 따라서 나는 네임 스페이스를 올바르게 선언했음을 101 % 확신합니다. 사실 저는 그것들을 모두 하나의 네임 스페이스로 사용했습니다. 그러나 문제가 있다고 생각해서 분리했습니다.
나는 몇 년 동안 코딩하지 않았지만 책과 인터넷을 꽤 열심히 공격했습니다. 내가 읽은 것에서는 내 네임 스페이스를 적절히 선언했을뿐만 아니라 using 문을 올바르게 배치했습니다. 게다가 여러 파일간에 동일한 네임 스페이스를 사용할 수 있어야한다는 것을 발견했습니다.
그래서 나는 어딘가에서 실수를 저질렀습니다. 그렇지 않으면 이것이 효과가있을 것입니다. 하지만 내가 말할 수있는 한 내가 아무 것도 만들지 않았다. 어떤 도움을 주시면 감사하겠습니다.
대단히 감사합니다. –