1
我想有一個靜態方法返回一個shared_ptr。shared_ptr的模板參數無效
它不是編譯並給模板參數1無效。
我想不通這是爲什麼。
此外,堆棧溢出說我的文章主要是代碼,我應該增加更多的細節。我不知道這是爲什麼,因爲簡潔永遠不會傷害任何人。我的問題是明確的,並且可以很容易地被詳細描述。
編譯器錯誤
src/WavFile.cpp:7:24: error: template argument 1 is invalid
std::shared_ptr<WavFile> WavFile::LoadWavFromFile(std::string filename)
WavFile.cpp
#include "WavFile.h"
#include "LogStream.h"
#include "assert.h"
using namespace WavFile;
std::shared_ptr<WavFile> WavFile::LoadWavFromFile(std::string filename)
{
ifstream infile;
infile.open(filname, ios::binary | ios::in);
}
WavFile.h
#pragma once
#ifndef __WAVFILE_H_
#define __WAVFILE_H_
#include <fstream>
#include <vector>
#include <memory>
namespace WavFile
{
class WavFile;
}
class WavFile::WavFile
{
public:
typedef std::vector<unsigned char> PCMData8_t;
typedef std::vector<unsigned short int> PCMData16_t;
struct WavFileHeader {
unsigned int num_channels;
unsigned int sample_rate;
unsigned int bits_per_sample;
};
static std::shared_ptr<WavFile> LoadWavFromFile(std::string filename);
private:
WavFile(void);
private:
WavFileHeader m_header;
PCMData16_t m_data16;
PCMData8_t m_data8;
};
#endif
嘗試添加命名空間WavFile限定符的返回值中LoadWavFromFile,即shared_ptr的的執行。是的,我知道你已經說過「使用命名空間WavFile」。但是由於名稱相同,編譯器感到困惑。 –
GreatAndPowerfulOz