Свой header(.h) и компиляция нескольких файлов [закрыт]

179
03 ноября 2019, 20:40

Я разделил свою программу на три файла. Все они находятся в одной папке и запускаются в компиляторе g++ как g++ main.cpp pkv.cpp pkv.h

Но выдает ошибку - скорее всего, я неправильно заполнил файлы pkv.cpp pkv.h. Если написать функцию to_dec() просто в main.cpp, то всё работает

В код сильно не смотрите: у меня он другой,а это упрощенная модель.

//main.cpp
//
//
#include <iostream>
#include "pkv.h"
using namespace std;
int main(int argc, char* argv[]) {
    string example = "1 5 20 15 3 -6 -19"
    double res_dec = to_dec(example);               //TO_DEC() - требуемая функция
    cout <<  "RESULT in DECIMAL: " << setprecision(30) << res_dec << endl;
    return 0;
}

Второй файл

// pkv.cpp
//
//
#include <iomanip>
#include <cmath>
#include <string> 
double to_dec(string pkv) {
  double decimal;
  short sign = atoi(pkv.substr(0, 1).c_str());
  for (int i = 0; i < 2; i++) {
    pkv.erase(0, pkv.find(' ') + 1);
  }
  while (pkv.find(' ') != -1) {
    decimal += pow(2, atoi(pkv.substr(0, pkv.find(' ')).c_str()));
    pkv.erase(0, pkv.find(' ') + 1);
  }
  decimal += pow(2, atoi(pkv.c_str()));
  return pow(-1, sign) * decimal;
}

И Третий

// pkv.h
//
//
#ifndef PKV_H
#define PKV_H
double to_dec(string pkv);
#endif
Answer 1

1) в вашем хэдэре используется некий string. Что это - компилятору никак не может быть известно.

2) ваш cpp файл с определением вашей функции никак не ссылается на ваш хэдэрфайл с объявлением функции

3) вам это уже написал компилятор. Почему вы не читаете что он вам говорит для меня загадка.

READ ALSO
MySQl BIND ip c++

MySQl BIND ip c++

как сделать бинд в mysql connector c++?

181
Разворто стека (дно сделать вершиной и наоборот) [закрыт]

Разворто стека (дно сделать вершиной и наоборот) [закрыт]

Не работает почему-тоХотел поменять 0 элемент с -1, 1 с -2, 2 с -3 и т

147
Подскажите почему это так не работает [закрыт]

Подскажите почему это так не работает [закрыт]

Я новичок и должен разобратся в массивах более детальноСмотрел на многие варианты, остановился на этом

184