2 つの簡単なテスト行があります。
cout<<(cout<<"ok"<<endl, 8)<<endl;
cout<<(int i(8), 8)<<endl;
最初の行は機能しましたが、2行目はコンパイルに失敗しました
error: expected primary-expression before 'int'
何らかの理由で、カンマ演算子で宣言が必要です。より具体的には、いくつかの変数を宣言し、それらの値を取得して、クラス コンストラクターの初期化リストから定数クラス メンバーに割り当てたいと考えています。以下は私の意図を示しています。コンマ演算子を使用して達成できない場合、別の提案はありますか?
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <cstdlib>
using namespace std;
void readFile(const string & fileName, int & a, int & b)
{
fstream fin(fileName.c_str());
if (!fin.good()) {cerr<<"file not found!"<<endl; exit(1);}
string line;
getline(fin, line);
stringstream ss(line);
try {ss>>a>>b;}
catch (...) {cerr<<"the first two entries in file "<<fileName<<" have to be numbers!"<<endl; exit(1);}
fin.close();
}
class A
{
private:
const int _a;
const int _b;
public:
A(const string & fileName)
:
_a((int a, int b, readFile(fileName,a,b), a)),
_b((int a, int b, readFile(fileName,a,b), b))
{
/*
int a, b;
readFile(fileName,a,b);
_a = a;_b = b;
*/
}
void show(){cout<<_a<<" "<<_b<<endl;}
};
int main()
{
A a("a.txt");
a.show();
}