простой & quot; идентификатор ‘xxx’ не определен & quot; используя структуру

Я едва запускаю новый проект и не могу просто напечатать пакет данных структуры из-за этой ошибки. Код выглядит следующим образом:

Заголовочный файл:

#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% моего кода. Мои #include есть. Я попытался просто назвать это чем-то более уникальным, но безрезультатно. Я не понимаю … Не могли бы вы увидеть, в чем здесь моя ошибка?

Спасибо!

1

Решение

init() является членом класса (и это private так что это не доступно в любом случае). main() не является членом этого класса. Здесь нет init() функция в глобальной области, либо. Вот почему компилятор жалуется на init() быть неопределенным — это действительно так. Там не определено init() функционировать в main()Сфера.

2

Другие решения

Прежде всего, init это метод класса EuropeanOption, так что вы можете вызвать его с такого объекта. Второй факт заключается в том, что этот метод private поэтому невозможно назвать это вне класса. И в-третьих, вы должны использовать конструктор для создания объектов. Прочитайте несколько книг по С ++, чтобы понять это.

3

По вопросам рекламы [email protected]