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()
函数。这就是为什么编译器抱怨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;
}