简单的“标识符'xxx'未定义”使用结构

时间:2012-10-07 16:34:34

标签: c++ struct identifier

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

标题文件:

#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):错误C3861:'init':未找到标识符”

这实际上是我代码的100%。我的#includes就在那里。我试着简单地命名一些更独特但无济于事的东西。我不明白......你能看到我的错误吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

init()是一个类的成员(它是private所以无论如何都无法访问它。 main()不是该类的成员。全局范围内也没有init()函数。这就是编译器抱怨init()未定义的原因 - 实际上是这样。 init()范围内没有定义main()函数。