1

我几乎没有开始一个新项目,由于这个错误,我无法简单地打印一批结构数据。代码如下:

头文件:

#ifndef EuropeanOption_HPP
#define EuropeanOption_HPP

#include <iostream>
#include <string>

using namespace std;    

struct EquityParms
{
    double T; // years until expiry
    double K; // strike price
    double sig; // vol
    double r; // risk free rate
    double S; // current equity price
};

class EuropeanOption
{
private:
    void init(const struct EquityParms data); // initialize EquityParms 

public:

};


#ifndef EUROPEANOPTION_CPP
#include "EuropeanOption.cpp"
#endif

#endif

源文件:

#ifndef EUROPEANOPTION_CPP
#define EUROPEANOPTION_CPP

#include "EuropeanOption_H.hpp"


void EuropeanOption::init(const struct EquityParms data)
{
    cout << "Years until expiry: \t" << data.T << endl;
    cout << "Strike price: \t" << data.K << endl;
    cout << "Volatility: \t" << data.sig << endl;
    cout << "Risk-free rate: \t" << data.r << endl;
    cout << "Current equity price: \t" << data.S << endl;
}

#endif

测试文件:

#include "EuropeanOption_H.hpp"

int main()
{

    struct EquityParms batch1 = {0.25, 65, 0.30, 0.08, 60};
    struct EquityParms batch2 = {1, 100, 0.2, 0.0, 100};
    struct EquityParms batch3 = {1, 10, 0.5, 0.12, 5};
    struct EquityParms batch4 = {30, 100, 0.30, 0.08, 100};

    init(batch1); // error on this line, "identifier init is undefined"

    return 0;
}

如果我尝试构建,编译器错误是:“test.cpp(22): error C3861: 'init': identifier not found”

这实际上是我代码的 100%。我的#include 在那里。我尝试简单地将其命名为更独特的名称,但无济于事。我不明白...你能看看我的错误是什么吗?

谢谢!

4

2 回答 2

3

首先,init是一个类的方法EuropeanOption,所以你可以从这样的对象中调用它。第二个事实是这个方法是private不可能在类外调用的。第三,您必须使用构造函数来创建对象。阅读一些 c++ 书籍以了解它。

于 2012-10-07T16:38:45.733 回答
2

init()是一个类的成员(而且它是private无论如何都无法访问的)。 main()不是该类的成员。全局范围内也没有任何init()功能。这就是编译器抱怨init()未定义的原因——确实如此。的范围内没有定义的init()函数main()

于 2012-10-07T16:44:25.247 回答