Форум программистов, компьютерный форум CyberForum.ru

При компиляции не может найти хеадер - C++

Восстановить пароль Регистрация
 
Dz_ViTo
 Аватар для Dz_ViTo
14 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 51
13.08.2011, 17:22     При компиляции не может найти хеадер #1
Написал программу.. она пашет, но когда весь код в main.cpp.
Решил ее усовершенствовать, чтобы мейн имел красивее вид, сделал вот так:
main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <fstream>
#include "clRead.h"
 
int main(){
    ifstream iF("One.txt", ios::in);
    clRead A[P];
    int iV = 0;
    if(!iF){
      cout<<"Error! File not found! \n";
      system("PAUSE");
      return 0;
    }else{
        while(!iF.eof()){
          A[iV].Read(iF);
          iV++;
        }
    }
    for(int i = 0; i<P; ++i)
      A[i].Show();
    clRead *p;
    p->MetVer(A, iV);
    system("PAUSE");
    return EXIT_SUCCESS;
}
clRead.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef CLREAD_H
#define CLREAD_H
 
class clRead{
        int cliQ;
        string clsQ;
        // Структура для "відповідь-питання"
        struct clsc{
          string clsA;
          string clvsA;
        }B[3];
        public:
        int Read(ifstream &F);// читаємо
        int Shufle();// мішаємо
        int Show();//показуємо
        bool Verification();// перевіряємо
        void MetVer(clRead A[], int iVar);//одразу все перевіряємо
};
#endif // CLREAD_H
clRead.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "clRead.h"
#include <ifstream>
#include <iostream>
#define N 10
int clRead::Read(ifstream &F ){
    int iSymbol = 1, iQuest = 0;
    string sFf;
    int i = 0;
    while(iSymbol){
      if(!iQuest){
        getline(F, sFf);
        this->clsQ = sFf;
        iQuest++;
      }
      F>> sFf;
      if(sFf == "/"){
         Shufle();
         F.ignore();
         return 0;
      }
      else if(sFf == "-"|| sFf == "+"){
            this->B[i].clsA= sFf;
            getline(F, sFf);
            this->B[i].clvsA = sFf;
            i++;
           }
    }
    return 0;
}
int clRead::Shufle(){//=== перемішування
  srand(time(NULL));
  std::cout<<rand()<<std::endl;
  int a = (rand()+sizeof(this->B[1].clvsA))%N;
  clRead sVar;
  if( a < 2 ){
    sVar.B[1] = this->B[a];
    this->B[a] = this->B[a+1];
    this->B[a+1] = sVar.B[1];
    }else{
     sVar.B[1] = this->B[a];
     this->B[a] = this->B[a-2];
     this->B[a-2] = sVar.B[1];
    }
   return 1;
}
int clRead::Show(){
  std::cout<< ") "<<this->clsQ<< std::endl;
  int j=0;
  while(j < N){
    std::cout<< 1+j << ") "<<this->B[j].clvsA<< std::endl;
    j++;
  }
  std::cout<<"Enter the number of answers: ";
  std::cin>>this->cliQ;
  --cliQ;
  std::cout<< std::endl;
  return 1;
}
bool clRead::Verification(){
  if(this->B[cliQ].clsA == "+")
    return true;
    else
      return false;
}
 
void clRead::MetVer(clRead A[], int iVar){
  float Result = 0;
  for(int i = 0; i <iVar; ++i){
    if(A[i].Verification())
        Result++;
    }
  std::cout<<"You result: "<<Result <<" in percentage: "<<((Result/iVar)*100)<<"%. "<< std::endl;
}
Пишет что не может найти clRead.h
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Drum and C++
12 / 14 / 0
Регистрация: 03.08.2011
Сообщений: 213
13.08.2011, 18:01     При компиляции не может найти хеадер #2
Цитата Сообщение от Dz_ViTo Посмотреть сообщение
clRead A[P];
помойму это синтаксически неправильно но непроверял

Добавлено через 17 минут
Цитата Сообщение от Drum and C++ Посмотреть сообщение
помойму это синтаксически неправильно но непроверял
может я ошибаюсь
Dz_ViTo
 Аватар для Dz_ViTo
14 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 51
13.08.2011, 18:53  [ТС]     При компиляции не может найти хеадер #3
нет... там все ок
компилятор CodeBlocks, и создаю клас вроде норм.. но не то
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
13.08.2011, 21:00     При компиляции не может найти хеадер #4
Цитата Сообщение от Dz_ViTo Посмотреть сообщение
Пишет что не может найти clRead.h
clRead.h находится в той же папке, что main.cpp?
Dz_ViTo
 Аватар для Dz_ViTo
14 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 51
14.08.2011, 16:48  [ТС]     При компиляции не может найти хеадер #5
Нет
При создании проекта создаются пару папок для дополнительных файлов.
хеадер создается в папке include
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
14.08.2011, 16:50     При компиляции не может найти хеадер #6
ну так пропиши ему полный путь в "".
Dz_ViTo
 Аватар для Dz_ViTo
14 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 51
15.08.2011, 12:34  [ТС]     При компиляции не может найти хеадер #7
OstapBender, спасибо, ето знем...
Кстати лучше чтоб путь был на английском
НО как же сделать чтоб не указывать полный путь, ето же должно быть возможно?
silentnuke
Android Programmer
137 / 138 / 5
Регистрация: 08.12.2010
Сообщений: 421
15.08.2011, 13:07     При компиляции не может найти хеадер #8
Цитата Сообщение от Dz_ViTo Посмотреть сообщение
OstapBender, спасибо, ето знем...
Кстати лучше чтоб путь был на английском
НО как же сделать чтоб не указывать полный путь, ето же должно быть возможно?
а файл библиотеки, рядом с main.cpp трудно положить?)
в msvs проекту можно указать доп.папки, откуда тянуть include. Не знаю, есть ли такая возможность в codeblocks.
Dz_ViTo
 Аватар для Dz_ViTo
14 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 51
15.08.2011, 14:17  [ТС]     При компиляции не может найти хеадер #9
вопрос решен
еще есть такая проблема: в *. h есть объявления типа string, на которые компиляторы матерятся, попытался подключать в *. h <string> но ситуация не меняется ...
Возможно кто даст ссылку на эту тему почитать =)
Ето по поводу сборки программ
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
15.08.2011, 16:06     При компиляции не может найти хеадер #10
Dz_ViTo, можно чуть более внятно? Как и что подключаете, и как матерятся "компиляторы"?
-=ЮрА=-
Заблокирован
Автор FAQ
15.08.2011, 16:18     При компиляции не может найти хеадер #11
Думаю проблемма связана с директивой #pragma once и отсутствием подключения cpp-ника с прототипами функций из clRead.h

В clRead.h вставить #pragma once
C++
1
2
3
4
5
6
7
8
#ifndef CLREAD_H
#define CLREAD_H
 
///////////////
#pragma once
//////////////
 
class clRead{
В main.cpp вставить clRead.cpp
C++
1
2
3
4
5
6
#include <iostream>
#include <fstream>
#include "clRead.h"
//////////////
#include "clRead.cpp"
//////////////
Dz_ViTo
 Аватар для Dz_ViTo
14 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 51
16.08.2011, 13:04  [ТС]     При компиляции не может найти хеадер #12
та уже все норм... хотя страно когда в средствами компилятора создаеш класс, а он не может потом найти хеадер класса(CodeBlocks)в етом же проекте(!), сделал потом на QtCreator у него проблем таких небыло.
Што касается string и fstream нужно указать пространство имен(std::string и т.д.)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2011, 14:41     При компиляции не может найти хеадер
Еще ссылки по теме:

ошибка при компиляции C++
C++ При компиляции не может найти mpi_cxx
C++ не может найти какой-то файл при компиляции

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
jerdeks
1 / 1 / 0
Регистрация: 19.04.2009
Сообщений: 13
16.08.2011, 14:41     При компиляции не может найти хеадер #13
-=ЮрА=-, там дефайны, не нужна #pragma once. И исходник инклюдить не надо, его линкер возьмет
Yandex
Объявления
16.08.2011, 14:41     При компиляции не может найти хеадер
Ответ Создать тему
Опции темы

Текущее время: 18:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru