三項演算子を使ってオブジェクトを作成しようとしていますが、毎回最初のものだけが呼び出されます。三項演算子を使った初期化クラスオブジェクトエラー
bool itTrue(int x, int y){
if(x>y)
return true;
return false;
}
class myClass {
public:
myClass(int x){
val=x;
}
myClass(int x, int y){
val=x*y;
}
val=0;
};
int main(){
aa=5;
bb=6;
myClass cc = isTrue(aa,bb) ? (aa,bb) : (bb,bb);
cout<<cc.val<<endl;
return 0;
}
は、isTrue関数が呼び出された後、呼び出されるコンストラクタは一つのオブジェクト使用して1か、Debugerを使用しているいくつか:ここに私の簡単なコードである myClass(int x)
をしかし、私は両方の引数を使用する場合、どのように私は他の1つを呼び出しますか: myClass(int x, int y)
三項演算子を使用してですか?
あなたはに取得しようとしていますカンマ演算子を知っている。そして、もしあれば、 "short"は何ですか? – LogicStuff
適切なコピーコンストラクタを用意し、 'myClass cc = isTrue(aa、bb)? myClass(aa、bb):myClass(bb、bb); ' –
コピーコンストラクタを無視し、あなたが言ったように書くべきですか?それとも実装する必要がありますか? – raptor0102