在头文件中定义函数 - 获得不同的结果

时间:2016-04-22 19:35:39

标签: c++ function

我遇到了一个我无法理解的问题。我在main.cpp中的那段代码:

void bisection(double a, double b, std::vector<double>& vctr, const double eps)
{
    double x0 = 0.0;

    while( abs(a - b) > eps)
    {
        x0 = (a + b)/2.0; // middle value
        double tmp = poly(x0); // to calculate this value only one time
        double tmpA = poly(a);
        double tmpB = poly(b);

        if( tmp == 0)
            break;

        else if( tmpA * tmp  < 0.0)
            b = x0;

        else if( tmpB * tmp < 0.0)
            a = x0;

        if(tmpB*tmp > 0 && tmpA*tmp >0)
            return;
    }

    vctr.push_back(x0);
}

int main(int argc, char *argv[])
{
    double a = -12.0, b= 20;
    vector<double> vctr;

    while(a <= b)
    {
        bisection(a, a+0.1, vctr);
        a += 0.1;
    }

    for(int i=0; i<vctr.size(); i++)
        cout << vctr[0] << endl;

    return 0;
}

在这种情况下一切正常。但是如果在头文件alg.h中定义函数bisection或者将它们取消它们并在alg.cpp中定义它给出了填充零的大小为321((20 + 12)/0.1 + 1)的向量。我完全不知道为什么。有什么帮助吗?

0 个答案:

没有答案