C++ C++;我需要帮助吗?

C++ C++;我需要帮助吗?,c++,c++11,visual-c++,dev-c++,visual-c++-2010,C++,C++11,Visual C++,Dev C++,Visual C++ 2010,我已经做了一个代码,必须写一个数学函数,然后给图像。首先,将函数作为字符串变量引入,但我不知道如何将其转换为另一种类型的变量以返回函数的图像 我得到的编译器错误是: 无法将参数“1”的“std::string{aka std::basic_string}”转换为“const char*””,转换为“int printf(const char*,…)” #包括 #包括 #包括 #包括 #包括 #包括//setprecision// #包括 #包括 #定义精度4 #定义K100 使用名称空间std;

我已经做了一个代码,必须写一个数学函数,然后给图像。首先,将函数作为字符串变量引入,但我不知道如何将其转换为另一种类型的变量以返回函数的图像

我得到的编译器错误是:

无法将参数“
1
”的“
std::string{aka std::basic_string}
”转换为“
const char*”
”,转换为“
int printf(const char*,…)

#包括
#包括
#包括
#包括
#包括
#包括//setprecision//
#包括
#包括
#定义精度4
#定义K100
使用名称空间std;
双勇士(双甲,双乙);
双g(双x);
双x;
双a=x;
双y(x);
int i;
int main(){

这个使用C++14的在线编译器没有问题:

#包括
#包括
#包括//设置精度//
#包括
#包括
#定义精度4
#定义K100
使用名称空间std;
双勇士(双甲,双乙);
双g(双x);
双x;
双a=x;
双y(x);
int i;
int main()
{
库特

您的函数不返回任何值,但应返回“double”。

我假定其目的是:

cin >> s;   cout << s;
double y = printf(s.c_str());

为什么要执行此操作:
double y=printf(s.c_str())
当您可以使用
时,使用调试器将有助于澄清问题。这是学习使用调试器的一个很好的示例。此代码编译和运行时不进行任何编辑。无论问题是什么,它要么不在本代码中,要么不是所要求的。没有其他人看到valors()缺少的返回?O.简化你的代码,将其简化为问题的一部分。你当前的代码包含了许多与你的问题无关的内容-一个最小的样本通常看起来类似于一个好的单元测试:只执行一个任务,输入值指定为可再现性。LOL你没有包括;-;@Kostas Lifeboy,它在IdeOne上。它不仅仅是我n此处的代码文本。LOL我刚刚尝试了它,但它没有抛出任何错误O.O Awesome!:DCrank提高警告级别。我使用
-pedantic-pedantic errors-Wall-Wextra-Werror
这是我遇到的唯一编译错误,似乎只有VS将其视为错误。
#include<iostream>
#include<stdio.h>
#include<iomanip> //setprecision//
#include<sstream>
#include<string>
#define precisio 4
#define K 100
using namespace std;
double valors(double a, double b);
double g(double x);
double x;
double a = x;
double y(x);
int i;
int main()
{
    cout << setprecision(precisio);
    cout << "Escriu l'interval de la funció" << endl;
    double a, b;
    cout << "\n a =";
    cin >> a;
    cout << "\n b =";
    cin >> b;
    cout << "Escriu la funcio" << endl;
    string s;
    cin >> s;
    cout << s;
    double y = printf(s.c_str());
    valors(a, b);
}

double valors(double a, double b)
{
    int punts = K * (b - a) + 1;
    double amplada = (b - a) / K;
    cout << "\n\tx\tf(x)" << endl;

    for (int i = 0; i < punts; i++)
    {
        cout << "\t" << a << "\t" << g(a) << endl;
        a = a + amplada;
    }
}
double g(double x)
{
    return y;
}
double valors(double a, double b)
cin >> s;   cout << s;
double y = printf(s.c_str());