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

Сборка проекта, объявление и инициализация конструкторов в одном месте - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Синтаксис в подсказках VC++ 2010. http://www.cyberforum.ru/cpp-beginners/thread527321.html
В VC ++ 2010, при наведении на строку: make_pair("&apos", "'") всплывает подсказка, в которой, в частности, есть такие строчки: std::pair<char *, char *> std::make_pair<char , char >(const char (&_Val1), const char(&_Val2)) template<class _Ty1, class _Ty2> std::pair<std::tr1::_Unrefwrap<_Ty1>::type, std::tr1::_Unrefwrap<_Ty2>::type> std::make_pair(_Ty1 &&_Val1, _Ty2 &&_Val2) В строчке 1)...
C++ Преобразовать программу, нужны главные диагонали Мне надо преобразовать программу так, что бы вместо вделения произвольных столбцов, программа выделяла главные дагонали. Как сделать не знаю, помогите. Вот текст программы:#include <vcl.h> #include <iostream.h> #include <conio.h> int fun(int j,int mas) { int i; for (i=0; i<5; i++) cout << mas << "\n"; return 0; } http://www.cyberforum.ru/cpp-beginners/thread527316.html
Помогите с pair C++
Скажите пожалуйста как до этого "куска" кода "прикрутить" pair, чтобы переменная x, xx вернулись в main. Этот код позже планирую сделать как подпрограмму. Хотел сделать по этому примеру но не получилось :( #include <vcl.h> #include<conio.h> #include<stdio.h> #include<math.h> #include<iostream.h> #include<string.h> #include <utility.h> using namespace std;
C++ [C++] Вычислить интеграл функции методом трапеций, предусмотреть...
нужна программа на С++: вычислить интеграл функции f(x) методом трапеций, предусмотреть выбор из 10 видов функций...!!((
C++ Динамическое выделение памяти под двумерный массив http://www.cyberforum.ru/cpp-beginners/thread527251.html
Здравствуйте. Как мне правильно и грамотно (!) выделять память под двумерные массивы? Откуда возникла необходимость — хотел сделать такое вот: int height, width; inputSize( &height, &width ); bool booleanArray; short numArray;
C++ Считывание массива строк Добрый вечер! Я не научилась нормально программировать, опыта еще нет, ну это не важно. В общем у меня такая проблема - как можно нормально считать строки? Их порядка 60, считывать из файла, в каждой строке должно быть не больше N символов Пробую так #include <iostream> #include <fstream> using namespace std; int main() подробнее

Показать сообщение отдельно
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
25.03.2012, 08:51  [ТС]     Сборка проекта, объявление и инициализация конструкторов в одном месте
text.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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include "text.h"
 
//------------------------------------------------------------------------------------------------------------------
//инициализация статических полей
std::fstream text::sfile;
std::string text::staticline;
std::string text::statickey;
std::string text::staticresultline;
 
text::text(void)
{}
 
//виртуальный диструктор
 text::~text(void)
{}
 
//------------------------------------------------------------------------------------------------------------------
//конструктор с 2-мя параметрами
text::text(const char*const cchcaddress,const char*const cchckey)
{
    text::updata(cchcaddress,cchckey);//вызов метода для инициализации полей
}
 
//------------------------------------------------------------------------------------------------------------------
//инициализация полей
void text:: updata(const char*const cchcaddress,const char*const cchckey)
{
    sfile.open(cchcaddress,std::ios::in);
    //если не удалось отркрыть поток
    if(!sfile)
    {
        //смена кодировки для вывода Русского языка в консоли
        setlocale(LC_ALL,"Russian_Russia.1251");
        //если badbit или faibit
        if(sfile.bad())
        {
            std::cerr<<"Невозможно открыть файл!";
            std::cerr<<"Неисправимая ошибка!\n";
            system("pause");//даём возможность взглянуть на сообщение
            setlocale(LC_ALL,"Russian_Russia.866");//возврат к стандартной кодировке
            exit(-1);
        }
        else if(sfile.fail())
        {
            std::cerr<<"Невозможно открыть файл!\n";
            std::cerr<<"Файл либо не существует либо не правильно указан путь к файлу!\n";
            system("pause");//пауза
            setlocale(LC_ALL,"Russian_Russia.866");//возврат к стандартной кодировке
            exit(-1);
        }
 
    }
    sfile.close();//закрываем поток для перезадачи атрибутов открытия
    sfile.open(cchcaddress,std::ios::in|std::ios::binary);
    char ch;//для временного хранения символов
    sfile.get(ch);//задаем первое значение символа
    while(sfile)//продолжать пока не дойдём до конца файла
    {
        staticline+=ch;//добовляем посимвольно значения из файла в поле 
        sfile.get(ch);
    }
    //запись текста из файла в поле класса
    statickey=cchckey;//копирование ключа
    sfile.close();//закрываем паток
}
 
//------------------------------------------------------------------------------------------------------------------
//статический метод для записи на диск
int text::write(const char* const cchcaddress)
{
    sfile.open(cchcaddress,std::ios::out|std::ios::binary);//открыть паток
    if(!sfile)//если поток не открыт ничего не предпринемаем
    {   
        setlocale(LC_ALL,"Russian_Russia.1251");
        std::cerr<<"Провал записи!Закрыт поток\n";
        setlocale(LC_ALL,"Russian_Russia.866");
        return 1;
    }
    sfile<<staticresultline<<std::endl;//запись в файл
    sfile.close();//закрыть паток
    return 0;
}
 
//------------------------------------------------------------------------------------------------------------------
//статический метод для чтения с диска
int text::read(const char*const cchcaddress)
{
    sfile.open(cchcaddress,std::ios::in|std::ios::binary);//открыть паток
    if(!sfile)//если поток не открыт то ничего не предпринемаем
    {   
        setlocale(LC_ALL,"Russian_Russia.1251");
        std::cerr<<"Провал записи!Закрыт поток\n";
        setlocale(LC_ALL,"Russian_Russia.866");
        return 1;
    }
    char ch;//для временного хранения символов
    sfile.get(ch);//задаем первое значение символа
    while(sfile)//продолжать пока не дойдём до конца файла
    {
        staticline+=ch;//добовляем посимвольно значения из файла в поле 
        sfile.get(ch);
    }
    sfile.close();//закрыть паток
    return 0;
}
//------------------------------------------------------------------------------------------------------------------
//фиктивная зашифровать разшифровать
int text:: unstencry(void)
{return 1;}
 
void text:: show(void)
{std::cout<<staticline<<statickey<<staticresultline<<std::endl;}
text.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
//объявления
#include<fstream>
#include<iostream>
#include<string>
#include<typeinfo>
//базовый класс текст
class text
{
    //protected:
    public:
        static std::fstream sfile;//указатель на поток
        static std::string staticline;//исходный текст
        static std::string statickey;//ключ
        static std::string staticresultline;//зашифрованый текст
        //конструктрор без параметров
        text(void);
        //конструктор с 2-мя параметрами
        text(const char*const,const char*const);
        //виртуальный диструктор
        virtual ~text(void);
        //статический метод инициализация полей
        static void updata(const char*const,const char*const);
        //запись на диск
        static int write(const char*const);
        //чтение с диска
        static int read(const char* const);
        //фиктивная зашифровать раcшифровать
        virtual int unstencry(void);
        void show(void);
 
};
vigener.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
#include "text.h"
class vigener :virtual private text
{
    private:
        static const int sciMAXASCII866;//количество символов в таблице ASCII866 
        static unsigned int suicount;//счетчик на объекты класса
        static std::string sstrACII866;//таблица ASCII866
        static char** chptgemline;//для хранения альтернативной записи текста в числах
        static unsigned int suisizegemline;//для хранения размерности матрицы chptgemline
        //перегрузка оператора копирования
        vigener(const vigener& const);
        //перегрузка оператора присвоения
        vigener& operator=(const vigener& const);
    public:
        //конструктор без параметров
        vigener(void);
        //конструктор с двумя параметрами
        vigener(const char*const,const char*const);
        //диструктор
        ~vigener(void);
        //сгенерировать таблицу ASCII866 в числовом диапозоне 1..255
        static void getASCII866(void);
        //зашифровать раcшифровать
        int unstencry(void);
        //преобразовать исходный текст в альтернативный числовой в соответствии с ASCII866
        void numtrans(void);
        //преобразовать числовой вид в текст
        void literaltrans(void);
};
vigener.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
#include "vigener.h"
//инициализация статических полей класса
unsigned int vigener::suicount;
const int vigener::sciMAXASCII866 = 255;
 
/*
 
        static const int sciMAXASCII866;//количество символов в таблице ASCII866 
        static unsigned int suicount;//счетчик на объекты класса
        static std::string sstrACII866;//таблица ASCII866
        static char** chptgemline;//для хранения альтернативной записи текста в числах
        static unsigned int suisizegemline;//для хранения размерности матрицы chptgemline
        //перегрузка оператора копирования
        vigener(const vigener& const);
        //перегрузка оператора присвоения
        vigener& operator=(const vigener& const);
*/
vigener::vigener(void):text()
{suicount++;}
 
vigener::~vigener(void)
        {   if(suicount<1)
            {
                for(int i=0;i<suisizegemline;i++)
                    delete chptgemline[i];
            }
            else
            {suicount--;}
        }
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
#include"text.h"
 
int main(void)
{
    class text t("text.doc","key");
 
    system("pause");
 
return 0;
}
Добавлено через 11 минут
Что бы этот код не отгонял людей сразу скажу что из всего этого нужно отследить работу конструктора и диструктора. Т.е. когда они объявлены и описаны в *.h то собирается без ошибок, иначе
C++
1
2
3
4
Ошибка  7   error LNK1120: 3 неразрешенных внешних элементов    D:\Project_VS_2010\C++\garbage\encryption\Debug\encryption.exe  encryption
Ошибка  4   error LNK2001: неразрешенный внешний символ ""private: static char * * vigener::chptgemline" (?chptgemline@vigener@@0PAPADA)"   D:\Project_VS_2010\C++\garbage\encryption\encryption\vigener.obj    encryption
Ошибка  5   error LNK2001: неразрешенный внешний символ ""private: static unsigned int vigener::suisizegemline" (?suisizegemline@vigener@@0IA)" D:\Project_VS_2010\C++\garbage\encryption\encryption\vigener.obj    encryption
Ошибка  6   error LNK2019: ссылка на неразрешенный внешний символ "public: virtual int __thiscall vigener::unstencry(void)" (?unstencry@vigener@@UAEHXZ) в функции "[thunk]:public: virtual int __thiscall vigener::unstencry`vtordisp{4294967292,0}' (void)" (?unstencry@vigener@@$4PPPPPPPM@A@AEHXZ)  D:\Project_VS_2010\C++\garbage\encryption\encryption\vigener.obj    encryption
 
Текущее время: 18:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru