すぐ下にリストされているいくつかのファイルがあり、そこでいくつかの名前空間とクラスを定義しています。次に、ファイルの1つに、他のクラスからクラスを取り込もうとしています。問題は、コンパイラが名前空間を見つけられないように見えることです。
カロン.cpp
あご.cpp
chout.cpp
main.cpp
私の名前空間はcharon、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: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
カロン.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:
//Methods
};
あご.cpp
#include <iostream>
#include <borland/conio.h>
#include <ncurses.h>
#include <boost/thread.hpp>
using namespace std;
using namespace charon;
using namespace charon_out;
namespace charon_in
{
class chin_
{
private:
bool pause;
charon_* engine;
inline iostream grab();
public:
//Methods
};
私はすべてをトリプルチェックしました。したがって、構文が正しいと確信していますが、明らかに、いくつかの重要な概念が欠けています。そうでなければ、コンパイラは文句を言いません。
(クラスを cpp ファイルに入れることは標準的なことではないことは知っていますが、それが可能であることはわかっているので、試してみることにしました。)
私は自分が犯した間違いを見ることができません。どんな助けでも大歓迎です。