これが私のコードです。これは私の心を揺さぶっています。
#include <iostream>
#include <sstream>
#include <set>
#include <cmath>
#include <cstdlib>
#include "list.h"
#include "stack.h"
#include <limits>
#define PI 3.1415926535897932384626433832795
class RPN : public Stack<float> {
public:
std::string sqrt(float n);
};
std::string RPN::sqrt(float n){
std::string x;
x = sqrt(3.0);
std::ostringstream ss;
ss << n;
return (ss.str());
}
はい、コンパイル中です。sqrt は文字列を返しています。double または float を使用しようとすると、奇妙なエラーがスローされます。誰が何が起こっているのか教えてもらえますか? 私は前にこれを持ったことがない。面白いことに、実際には後で文字列に変換していますが、これが他の場所でコンパイルされるとは思えません...
postfix.cpp: In member function ‘std::string RPN::sqrt(float)’:
postfix.cpp:161:13: error: cannot convert ‘std::string {aka std::basic_string<char>}’ to ‘float’ in assignment
編集: 最初に間違ったコンパイラ エラーを投稿しました。
edit2: 161 行目は n=sqrt(n); double x = sqrt(n) や他の多くの方法も試しました。ああ、上記の方法で返された文字列を出力すると、セグフォルトが発生します(obv ..)
std::string RPN::sqrt(float n) {
n = sqrt(n);
std::ostringstream ss;
ss << n;
return (ss.str());
}