Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не компилится проект, непонятная ошибка 
:(
    Опции темы
WERITAS
Дата 14.10.2006, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Сделал программу в среде MS VC++ 6.0, захотел скомпилировать этот же самый код уже в IDE VS 2005,  а там какие-то четыре ошибки smile Никак не могу понять их! Ну вот например одна из них:
Код

error C2248: 'std::basic_ios<Elem,_Traits>::basic_ios':cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'


А вот сами исходники проги (прога типа Виндифа)

functions.h
Код

# pragma once

# include <iostream>
# include <fstream>
# include <windows.h>
# include <string.h>
# include <stdio.h>

using namespace std;

//-----------------------------------------------------------------------------------------------
void RusOut(char *Str);
void Change(char* adress,char s1,char s2,char s3);
void OpenFile(fstream file, char* adress, char* nom);
void FindString(fstream file1, fstream file2, char c1, char c2);



functions.cpp
Код

# include "functions.h"
//-----------------------------------------------------------------------------------------------
void RusOut(char *Str)
{
unsigned char c;
for(int i=0;Str[i]!='\0';i++)
  {
  c=Str[i];
  if(c>127)
    {
    if(c<240)c-=64;
    else     c-=16;
    }
  cout<<c;
  }
}
//-----------------------------------------------------------------------------------------------
void Change(char* adress,char s1,char s2,char s3)
{
    char* newadress = new char[100];
    strcpy(newadress,adress);
    
    newadress[strlen(newadress)-3]=s1;
    newadress[strlen(newadress)-2]=s2;
    newadress[strlen(newadress)-1]=s3;
    
    int i=rename(adress,newadress);
    strcpy(adress,newadress);

    delete [] newadress;
}
//-----------------------------------------------------------------------------------------------
void OpenFile(fstream file,char* adress,char* nom)
{
//    RusOut("Введите путь к "); RusOut(nom);  RusOut(" файлу :> ");
//    cin.getline(adress,100); 
    
    Change(adress,'t','x','t');
    
    file.open(adress,ios::in); 
    
    if(!file) 
    { cout<<"\aERROR: ";
      RusOut("Файл не найден. Проверьте правильно ли введен путь к файлу"); 
      cout<<endl; OpenFile(file,adress,nom); }

}
//-----------------------------------------------------------------------------------------------
void FindString(fstream file1, fstream file2, char c1, char c2)
{
    file1.seekg(0);    
    file2.seekg(0); 
    
    int k=1;
    while(file2.tellg()!=EOF)
    {
        if(c2=='\n') k++;
        
        file1.read(&c1,1);
        file2.read(&c2,1);

        if(c1!=c2) break;
    }
    

    cout<<"\n+--------------------------+\n";
    RusOut("| Номер строки:          "); cout<<k;  cout<<" |"<<endl;
    RusOut("| Символ  в 1-ом файле:  "); cout<<c1; cout<<" |"<<endl;
    RusOut("| Сивмол  во 2-ом файле: "); cout<<c2; cout<<" |"<<endl;
    cout<<"+--------------------------+\n"; 
}


main.cpp
Код

# include "functions.h"
//----------------------------------------------------------------------------------------------
int main()
{
    //SetConsoleTitle("Find String X  ver 0.9.3      (c),2006");
    
    cout<<"+---------------------------------------------------------------------+";
    RusOut("\n|  Программа ищет номер первой отличающейся строки в двух файлах      |"); 
    RusOut("\n|  ВНИМАНИЕ: когда будете вводить имя файла, укажите его расширение   |");
    cout<<" \n+---------------------------------------------------------------------+";
    RusOut("\nНажмите Enter для продолжения"); cin.get(); cout<<"\n";
    
    fstream file_1,file_2;
    char    adress_1[50],adress_2[50],old[3];
    char    ol_1,ol_2,ol_3;
    char    c_1,c_2;

    RusOut("Введите путь к первому файлу  :> ");
      cin.getline(adress_1,100); 

    ol_1 = adress_1[strlen(adress_1)-3]; 
    ol_2 = adress_1[strlen(adress_1)-2]; 
    ol_3 = adress_1[strlen(adress_1)-1];

    OpenFile(file_1,adress_1,"первому");
    
    RusOut("Введите путь ко второму файлу :> ");
      cin.getline(adress_2,100); 

    OpenFile(file_2,adress_2,"второму");

    FindString(file_1,file_2,c_1,c_2);

    file_1.close();
    file_2.close();

    Change(adress_1,ol_1,ol_2,ol_3);
    Change(adress_2,ol_1,ol_2,ol_3);

    RusOut("\nНажмите Enter для продолжения"); cin.get();
    return 0;
}


Теряю веру в VS2005 и в жизнь... Помогите smile


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
Daevaorn
Дата 14.10.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(WERITAS @  14.10.2006,  19:53 Найти цитируемый пост)
void OpenFile(fstream file, char* adress, char* nom);
void FindString(fstream file1, fstream file2, char c1, char c2);

Поменяй на:
Код

void OpenFile(fstream& file, char* adress, char* nom);
void FindString(fstream& file1, fstream& file2, char c1, char c2);

У fstream запрещено копирование
PM MAIL WWW   Вверх
WERITAS
Дата 14.10.2006, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Сделал как ты сказал - заработало smile

P.S. Кстати, у меня вот этот проект, собранный на VC++ 6.0 и VS2005 работает по-разному! smile Каторый сделан на шестой ищет строку неправильно, а на посл. студии правильно. Теперь буду только ее юзать. smile 


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
JackYF
Дата 16.10.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



WERITAS, а ты уверен, что нету утечек/багов и т.д.? Чего это, интересно, VC++ 6 делает неправильно...

Странно это как-то...

P.S. Замечание просто так, код я не смотрел...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.