私は次のクラスを持っています:
// Buffer.cpp
#include "MonoSample.h"
#include "Buffer.h"
#define INBUFFERSIZEBLOCK 1024 // input block size
#define MAXBUFFERSIZE 1000000 // max buffer size (1MB)
#pragma warning (disable : 4996)
using std::endl;
using std::fstream;
Buffer::Buffer()
{
}
(...)
// Buffer.h
#pragma once
#include <string>
using std::string;
typedef struct WAV_HEADER
{
uint8_t RIFF[4];
uint32_t ChunkSize;
uint8_t WAVE[4];
uint8_t fmt[4];
uint32_t Subchunk1Size;
uint16_t audioFormat;
uint16_t numOfChan;
uint32_t samplesPerSec;
uint32_t bytesPerSec;
uint16_t blockAlign;
uint16_t bitsPerSample;
uint8_t Subchunk2ID[4];
uint32_t sampledDataLen;
} wavHdr, *pwavHdr;
class Buffer
{
private:
string wFileNamePath;
int nChannel;
wavHdr head;
unsigned long samplesLen;
unsigned long samplesPte;
FILE* wavFile;
MonoSample* firstSample;
public:
Buffer();
Buffer(string filePath, int id);
~Buffer();
wavHdr getHeader(); // retorna el header del fitxer wav
string getWavFileName(); // retorna el nom del fitxer wav
int getNumChannel(); // retorna el id del fitxer wav
bool ResetBuffer(); // inicia el bufer
void closeBuffer(); // allibera la memoria del buffer
bool openFile(string p, int n); // obre fitxer
MonoSample* getFirstSample(); // punter a la primera mostra mono
MonoSample* getSample(int n); // pointer to 16 bits of the mono sample n
};
// main.cpp
#include "Buffer.cpp"
#include "MonoSample.h"
#include <iostream>
using namespace std;
#define NUMCANALS 16
int main()
{
(...)
}
プログラムを実行すると、次のエラーが表示されます。
重大度コード 説明 Project File Line Suppression State Error LNK2005 "public: class MonoSample * __cdecl Buffer::getSample(int)" (?getSample@Buffer@@QEAAPEAVMMonoSample@@H@Z) は Buffer.obj で既に定義されています
重大度コード 説明 Project File Line Suppression State Error LNK2005 "public: class MonoSample * __cdecl Buffer::getFirstSample(void)" (?getFirstSample@Buffer@@QEAAPEAVMMonoSample@@XZ) は Buffer.obj で既に定義されています
(...)
main.cpp に #include "Buffer.cpp" と書いているのが原因だと思いますが、その #include なしでそれを行う方法がわかりません... 使用しない場合、どのように Buffer オブジェクトを使用できますか?この #include がありますか?
ありがとうございました!