異なる戻り値の型を持つ関数の実装

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Jyonsty
記事: 3
登録日時: 13年前

異なる戻り値の型を持つ関数の実装

#1

投稿記事 by Jyonsty » 12年前

僕は今、Javaで数式計算ライブラリを製作中です。
今、数式を"+" "-" "21" "5^3"といったトークンに分解する機能まで実装し終わって、
その分解したトークンを仕分ける、separateという関数を作成中なのですが、
手始めに

コード:

abstract class Element{}
class Number extends Element{}
class Exponent extends Element{} 
Number calcurate(Number n1,Number n2,char expr){}
Exponent calcurate(Exponent n1,Number n2,char expr){}
Exponent calcurate(Number n1,Exponent n2,char expr){}
Exponent calcurate(Exponent n1,Exponent n2,char expr)
Element separate(String line){
  if(
      /* いろいろな条件分岐  */
                                              )
  return new Number(line);
  else return new Exponent(line);
}
というクラス、関数を作成して、

コード:

String number1;
String number2;
calcurate(separate(number1),separate(number2),'+');
という呼び出しを試したんですけど、
関数の戻り値でElement型にしたせいか、例外が出てしまいます。
どのように実装をかえればいいですか?

Blue

Re: 異なる戻り値の型を持つ関数の実装

#2

投稿記事 by Blue » 12年前

separateの戻り値がElementで、
calcurateの引数がExponentなのがまずいんじゃないですかね?

コード:

Exponent calcurate(Element n1,Number n2,char expr){}
Exponent calcurate(Element n1,Exponent n2,char expr){}
Exponent calcurate(Element n1,Element n2,char expr)
って風にすればうまくいくかな?
Exponentじゃなきゃだめならだめだけど。

閉鎖

“C言語何でも質問掲示板” へ戻る