コンストラクターですべての作業を行うクラスがあります(そこで構築され、いくつかの計算を実行し、それらを出力し、コンストラクターでこれらすべてを破棄します)。
ここに簡略化されたコードがあります:
#include <iostream>
class myInt {
public:
myInt(int init) : mInt(init) {}
int mInt;
};
class SinglePara {
public:
SinglePara(myInt first) : member(first.mInt) { std::cout << member << std::endl; this->~SinglePara(); }
int member;
};
class TwoPara {
public:
TwoPara(myInt first, myInt second) : member1(first.mInt), member2(second.mInt) { std::cout << member1 + member2 << std::endl; this->~TwoPara(); }
int member1, member2;
};
int main()
{
myInt one(1), two(2), three(3);
TwoPara myTwo(one, two); // outputs 3 as expected
TwoPara(one, two); // outputs 3 as expected
SinglePara mySingle(three); // outputs 3 as expected
SinglePara(three); // won´t compile
std::cin.ignore();
return 0;
}
これで、私のコードの最初の 3 つの例は、期待どおりに動作します。three
しかし、最後のものはコンパイルさえしませんmyInt
。WhenSinglePara
とTwoPara
take as Arguments 整数の代わりにmyInt
then 4 つの例はすべて、私が望むように動作します。
誰かがこの動作を説明し、可能であれば 4 番目の例を修正する方法を教えてもらえますか?
MSVC 2013 を使用しています