Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 简单的;标识符';xxx和x27;是未定义的“;使用结构_C++_Struct_Identifier - Fatal编程技术网

C++ 简单的;标识符';xxx和x27;是未定义的“;使用结构

C++ 简单的;标识符';xxx和x27;是未定义的“;使用结构,c++,struct,identifier,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; //

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

头文件:

#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
如果尝试生成,编译器错误为: test.cpp(22):错误C3861:'init':找不到标识符

这是我100%的代码。我的行李在那里。我试着简单地给它起个更独特的名字,但没有用。我不明白。。。你能看出我的错误吗


谢谢

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

首先, init < /C> >是类<代码> Engand选项> />代码>,因此您可以从这样的对象调用它。第二个事实是这个方法是私有的,所以不可能在类外调用它。第三,必须使用构造函数来创建对象。阅读一些C++书籍来理解它。

< > >代码>()/>代码>是一个类的成员(它是代码>私下的<代码>,所以无论如何都是不可访问的)。code>main()不是该类的成员。全局作用域中也没有
init()
函数。这就是为什么编译器抱怨
init()
未定义的原因——确实如此。在
main()
的作用域中没有定义的
init()
函数。

init()
是类的成员(它是
私有的,因此无论如何都无法访问)
main()
不是该类的成员。全局作用域中也没有
init()
函数。这就是为什么编译器抱怨
init()
未定义的原因——确实如此。在
main()
的作用域中没有定义的
init()
函数。

您尝试使用它的方式表明您希望它是静态的。除此之外,通常您不会从标题中包含cpp文件,而是链接到它。为变量提供有意义的名称,而不仅仅是字母。为什么要包含源文件?建议:您可能还希望通过引用传递
(const EquityParams&data)
而不是
(const struct EquityParams data)
(这也不是C)@YochaiTimmer这些字母在选项公式中是有意义的。您试图使用它的方式表明您希望它是静态的。除此之外,通常您不会从标题中包含cpp文件,而是链接到它。为变量提供有意义的名称,而不仅仅是字母。为什么要包含源文件?建议:您可能还希望通过引用传递
(const EquityParams&data)
而不是
(const struct EquityParams data)
(这也不是C)@YochaiTimmer这些字母在选项公式中有意义。
#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;
}