这是我的代码。这让我难以置信。
#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 正在返回一个字符串。尝试使用双精度或浮点数会引发奇怪的错误。谁能告诉我发生了什么?我以前从未有过这个。有趣的是,我实际上稍后会转换为字符串,但我怀疑这会编译其他任何地方......
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) 和许多其他方法;哦,当我在上面发布的方法中打印出 retrned 字符串时,我得到一个段错误(obv ..)
std::string RPN::sqrt(float n) {
n = sqrt(n);
std::ostringstream ss;
ss << n;
return (ss.str());
}