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

error C2248 - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ C++ структуры. Копировать http://www.cyberforum.ru/cpp-beginners/thread1087642.html
void zadanie12() { struct Univer{ char *fam; char *kaf; char *dol; double zar;}; Univer *p1=new Univer; Univer *p2=new Univer; p1->fam="Игнатенко.О.М";
C++ Как это работает? Доброго времени суток. Граждане программисты, подскажите пожалуйста как работает данный кусок кода??? А точнее дружественные функции friend istream& operator>>(istream& s, employee& e) и friend ostream& operator<<(ostream& s, employee& e); 1)friend istream& operator>>(istream& s, employee& e) и friend ostream& - дружественная, перегруженная функция, которая возвращает значение класса... http://www.cyberforum.ru/cpp-beginners/thread1087634.html
C++ Как вывести содержимое всего файла на экран, принтер, файл?
В книгах уйма информации, я уже не могу ее переваривать. А практику сдавть нужно завтра. Помогите если не сложно.
появилась загвоздка с функцией. нужно вывести на экран строку, сост. из звездочек. Длина строки-параметр функциииз звезд. длина строки - C++
Я видела, что на форуме есть подобные задачи, но ни одно из их решений не работает на моем dev cpp.:( вот вариант решения, но он не работает. Посмотрите пжл в чем проблема? #include <iostream> #include <string> string function (int k) { std::cout<<std::string(_count,"*"); } function (15); return 0; }
C++ Как менять синус на косинус и наоборот в цикле http://www.cyberforum.ru/cpp-beginners/thread1087618.html
Как менять синус на косинус и наоборот в цикле
C++ Непонятное поведение Всем привет! В книге "Прата - Язык программирования C++. Лекции и управжения 2011" нашёл вот такой пример: const free_throws &clone( free_throws &ft ) { free_throws *pt; *pt = ft; return *pt } подробнее

Показать сообщение отдельно
marni
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 68
02.02.2014, 15:56     error C2248
Есть програма, которая должна откривать файл в папках, считать его хэш и добавлять в вэктор. Вот она:
File.h
Кликните здесь для просмотра всего текста
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
#pragma once
 
#include <boost/filesystem.hpp>
#include <fstream>
#include <string>
#include <functional>
 
namespace bfs = boost::filesystem;
 
class File
{
public:
    File() {}
    File(bfs::path Path);
    /*File(File&& obj);*/
    ~File();
 
    void setFilePath(bfs::path p);
    void refresh();
 
    bfs::path getFilePath();
    std::string getFileName();
    std::size_t getFileSize();
    std::size_t getFileHash();
private:
    void fileHash();
    bfs::path filePath;
    std::ifstream file;
    std::size_t fileSize;
    std::size_t hash;
 
    std::hash<std::string> hashing;
    std::string hashName;
};


File.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
#include "File.h"
 
File::File(bfs::path Path)
    :filePath(Path)
{
    file.open(Path.string(), std::ios::ate);        
    fileHash(); 
}
 
 
File::~File()
{
    file.close();
}
 
void File::setFilePath(bfs::path p)
{
    filePath = p;
}
 
bfs::path File::getFilePath()
{
    return filePath.string();
}
 
std::string File::getFileName()
{
    return filePath.filename().string();
}
 
std::size_t File::getFileSize()
{
    return fileSize;
}
 
void File::fileHash()
{
    fileSize = file.tellg();
    hashName = filePath.filename().string() + std::to_string(fileSize);
    hash = hashing(hashName);
}
 
std::size_t File::getFileHash()
{
    return hash;
}
 
void File::refresh()
{
    file.open(filePath.string(), std::ios::ate);        
    fileHash();
}


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
26
27
#include <iostream>
#include <vector>
#include <memory>
 
#include "File.h"
 
int main(int argc, char** argv)
{
    std::vector<File> fileList;
    bfs::path fPath(bfs::initial_path());
    std::shared_ptr<File> f(new File);
 
    bfs::recursive_directory_iterator dirIt(fPath);
    while(dirIt != bfs::recursive_directory_iterator())
    {
        fileList.push_back(*f);
        
        f->setFilePath(dirIt->path());
        f->refresh();
        
        ++dirIt;
    }
 
    std::cin.get();
 
    return 0;
}


Компилятор дает такую ошыбку:
'std::basic_ifstream<_Elem,_Traits>::basic_ifstream' : cannot access private member declared in class 'std::basic_ifstream<_Elem,_Traits>'
Если я я правильно понял, то при добавлении в вектор, вызиваетса конструктор копирование, и при копировании file возникает ошыбка, так как копи конструктор file находитса в приватной секции.
мув конструктор не помог, копи тожэ, пробывал на поинтэрах та же проблема. Помогите решыть ее. Спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru