それで、私はインターネット上でどこにも言及されていない、かなり具体的な質問があります。
* 演算子をオーバーロードして、定数と配列の一部を乗算できるようにする方法を知りたいです。
私のコード、少なくとも関連性のあるビット、さらに必要な場合は投稿できます:
licenseCount licenseCount::operator * (const licenseCount& u) const
{
return(this->fxdx*u.fxdx, this->y_array*u.y_array);
}
int licenseCount::calc_vol(double z, char *argv[])
{
int area;
std::string y_array[9];
std::ifstream y_data;
y_data.open( argv[1] );
if(y_data.fail())
{
std::cout << "Can't open file!\n";
exit(1);
}
else
{
for(int i=0; i<=9;i++)
{
int temp;
y_data >> y_array[i];
std::cout << y_array[i] << '\n';
if(i%2 == 0)
{
temp = 2 * y_array[i];
area += fxdx * temp;
}
else if(i = 0)
{
area += fxdx * y_array[i];
}
else
{
temp = 4 * y_array[i];
area += fxdx * temp;
}
std::cout << area;
}
vol = area * depth;
return vol;
}
私のエラー:
licenseCount.cpp:62: error: 'const class licenseCount' has no member named 'y_array'
licenseCount.cpp:62: error: 'const class licenseCount' has no member named 'y_array'
licenseCount.cpp: In member function `int licenseCount::calc_vol(double, char**)':
licenseCount.cpp:90: error: no match for 'operator*' in '2 * y_array[i]'
licenseCount.cpp:91: warning: converting to `int' from `double'
licenseCount.cpp:95: error: no match for 'operator*' in '((licenseCount*)this)-licenseCount::fxdx * y_array[i]'
licenseCount.cpp:98: error: no match for 'operator*' in '4 * y_array[i]'
licenseCount.cpp:99: warning: converting to `int' from `double'
licenseCount.cpp:111: error: a function-definition is not allowed here before '{' token
licenseCount.cpp:113: error: expected `}' at end of input
インターネットで広範囲に検索しましたが、おそらく私の検索用語が間違っていたのでしょうが、考えられる限りの単語の組み合わせを使用して答えを見つけようとしました。/はぁ
注意してください、これは宿題ですが、あなたの説明/助けは大歓迎です!