|
分類:[C/C++]
はじめまして。
Micrpspft Visual Studioでプログラムを組んでいるのですが、
c:\program files\microsoft visual studio 10.0\vc\include\sstream(724): error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : private メンバー (クラス 'std::basic_ios<_Elem,_Traits>' で宣言されている) にアクセスできません。
というエラーが出てコンパイルができません。
ソースコードのうち、
sList.push_back(temp);
eqSList[temp.energy] = temp;
という行を削除するとエラーも消えるので、この部分が原因となっているということは分かるのですが、何が問題なのか分かりません。
以下にソースコードの一部を貼ります。
class Structure
{
public:
int num;
vector<string> atom;
vector<long double> xCoo,yCoo,zCoo;
long double energy, barrierEnergy;
Structure(){
}
bool push_back(string buf){//input atom and coordinate data from "string buf"
ss.str(buf);
ss >> tAtom >> tXCoo >> tYCoo >> tZCoo;
if(tAtom.size() > 2){
return 0;
}else{
atom.push_back(tAtom);
xCoo.push_back(tXCoo);
yCoo.push_back(tYCoo);
zCoo.push_back(tZCoo);
return 1;
}
}
private:
string tAtom;
long double tXCoo, tYCoo, tZCoo;
stringstream ss;
};
int main()
{
cout<<"ver 0.30 Programmed by Ryo Saito"<<endl;
cout<<"This program can process EQlist, MIN, SADDLE and IRC files."<<endl<<endl;
//Check the file type.
string eqList;
string fileName;
string buf;
int fileType = -1;//0:EQlist 2:MIN 3:SADDLE 4:IRC
cout<<"Is this file EQ list?(Y/N)"<<endl;
cin>>eqList;
if(eqList == "y" | eqList == "Y"){
cout<<"Filename? (Without _EQ_list.log)"<<endl;
cin>>fileName;
fileName = "./" + fileName + "_EQ_list.log";
fileType = 0;
}else{
cout<<"Filename? (Without .log)"<<endl;
cin>>fileName;
fileName = "./" + fileName + ".log";
ifstream fileTypeCheck(fileName.c_str());
for(int i = 0;i < 34;i++){
getline(fileTypeCheck,buf);
}
getline(fileTypeCheck,buf);
stringstream ssftc(buf);
ssftc >> fileType;
}
//Get structures.
stringstream ss1;
string check, dump;
Structure temp;
map<long double, Structure> eqSList;
vector<Structure> sList;
ifstream getS(fileName.c_str());
while( !getS.eof() ){
getline(getS,buf);
ss1.clear();
ss1.str(buf);
ss1 >> check;
if(check == "#"){
if(eqList == "y" | eqList == "Y"){
ss1 >> dump>> dump>> dump>> temp.num;
}else{
ss1 >> dump>> temp.num;
}
getline(getS,buf);
while(temp.push_back(buf)){
getline(getS,buf);
}
while(check != "Energy" && check != "ENERGY"){
getline(getS,buf);
ss1.str(buf);
ss1 >> check;
}
if(fileType == 0){
ss1 >> dump >> temp.energy;
check = temp.energy;
if(check.size() >= 17){
ss1 >> dump >> dump>> temp.barrierEnergy;
}else{
ss1 >> dump >> dump>> dump >> temp.barrierEnergy;
}
eqSList[temp.energy] = temp; //ここでエラーが出ます。
}else if(fileType == 2,3,4){
ss1 >> check;
if(check == "="){
ss1 >> temp.energy;
}else{
stringstream ssCheck(check);
ssCheck >> temp.energy;
}
sList.push_back(temp); //ここでエラーが出ます。
}
}
}
};
よろしくお願いします。
|