クラスにofstream
ファイルが含まれています。イテレータを使用してこのクラスのオブジェクトのベクトルのオブジェクトを削除するときに問題に直面します。
エラーは次のとおりです。
Error 10 error C2249: 'std::basic_ios<_Elem,_Traits>::operator =' : no accessible path to private member declared in virtual base 'std::basic_ios<_Elem,_Traits>' c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream
コード:
static vector<VOIP> calls;
...
for(...)
{
VOIP v = VOIP(...);
calls.push_back(v);
}
...
for( int i = 0 ; i < calls.size() ; i++)
{
if(...)
{
vector<VOIP>::iterator it = calls.begin() + i;
calls.erase(it);//"?"
break;
}
}
Face Error C2249 は行「?」から発生します。任意のヘルプとこれがクラスです
class VOIP
{
public:
VOIP(string SourceDirectoryPath, string startTime, signalling sig, int callerIp[], int calleeIp[], int callerPort, int calleePort);
VOIP(const VOIP & voip);
~VOIP(void);
//caller and callee voice vectors
vector<u_char> callerVoiceVector;
vector<u_char> calleeVoiceVector;
//caller and callee voice files and path
ofstream callerVoiceFile;
ofstream calleeVoiceFile;
string outFilePath;
string log;
ofstream logFile;
string startTime;
string endTime;
string length;
}
コピー コンストラクターのコメント行でも同じエラーが発生します。つまり、エラー C2249 です。
VOIP::VOIP(const VOIP & voip)
/*:calleePort(voip.calleePort), calleeVoiceFile(voip.calleeVoiceFile), calleeVoiceVector(voip.calleeVoiceVector),
callerPort(voip.callerPort), callerVoiceFile(voip.callerVoiceFile), callerVoiceVector(voip.callerVoiceVector),
callType(voip.callType), endTime(voip.endTime), length(voip.length), log(voip.log), logFile(voip.logFile),
outFilePath(voip.outFilePath), startTime(voip.startTime),
pleaseDial(voip.pleaseDial), DLHmm(voip.DLHmm)//signalings*///TODO
{
cout<<"inside copy constractor"<<endl;
}
VOIP::~VOIP(void)
{
callerVoiceVector.clear();
calleeVoiceVector.clear();
callerVoiceFile.close();
calleeVoiceFile.close();
logFile.close();
cout<<"inside destractor"<<endl;
}