私は自分でc++で書かれたバイトバッファクラスを持っています、それをコンパイルすることができ、それは正常に動作します。今、大きなプロジェクトで使用したいのですが、別のヘッダーに含めると、ビルドしようとするとエラーが発生します。エラーは次のとおりです。
CXX out.o
In file included from /usr/include/c++/4.6/streambuf:808:0,
from /usr/include/c++/4.6/ios:44,
from /usr/include/c++/4.6/ostream:40,
from /usr/include/c++/4.6/iostream:40,
from /path/to/file/src/someheader1.h:29,
from /path/to/file/src/someheader2.h:31,
from /path/to/file/src/somesource.cpp:24:
/usr/include/c++/4.6/bits/streambuf.tcc: In member function ‘virtual std::streamsize std::basic_streambuf<_CharT, _Traits>::xsgetn(std::basic_streambuf<_CharT, _Traits>::char_type*, std::streamsize)’:
/usr/include/c++/4.6/bits/streambuf.tcc:56:38: error: expected unqualified-id before ‘(’ token
/usr/include/c++/4.6/bits/streambuf.tcc: In member function ‘virtual std::streamsize std::basic_streambuf<_CharT, _Traits>::xsputn(const char_type*, std::streamsize)’:
/usr/include/c++/4.6/bits/streambuf.tcc:90:38: error: expected unqualified-id before ‘(’ token
In file included from /usr/include/c++/4.6/istream:859:0,
from /usr/include/c++/4.6/iostream:41,
from /path/to/file/src/someheader1.h:29,
from /path/to/file/src/someheader2.h:31,
from /path/to/file/src/somesource.cpp:24:
/usr/include/c++/4.6/bits/istream.tcc: In member function ‘std::streamsize std::basic_istream<_CharT, _Traits>::readsome(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize)’:
/usr/include/c++/4.6/bits/istream.tcc:693:46: error: expected unqualified-id before ‘(’ token
make[4]: *** [out.o] Error 1
プロジェクトのヘッダーファイルのスケルトン:
#ifndef _GUARD_
#define _GUARD_
#include <string>
#include <vector>
...
#include "bytebuffer.h"
namespace A {
namespace B {
using namespace std;
using namespace A::C;
class Myclass {
public:
...
virtual void save( ByteBuffer& bb ) {
}
...
} ;
}
}
#endif
バイトバッファは非常にシンプルで、データ用のベクトルと、さまざまなタイプのputメソッドとgetメソッドが含まれています。ヘッダーのsaveメソッドをコメントアウトすると、何も変更されないため、バイトバッファーを宣言する必要さえなく、エラーがスローされます。何が原因でしょうか?