7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
1

Почему в одном месте работает, а в другом нет?

17.01.2020, 11:27. Показов 1964. Ответов 4
Метки нет (Все метки)

Доброго времени суток.
Почему один код работает, а в другом сыпятся ошибки?
Как бы смысл кода по сути один и тот же, но что-то мешает в нерабочем проекте.

Рабочий:
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
#include <iostream>
#include <random>
#include <vector>
 
using namespace std;
template <typename T>
class MyClass
{
public:
    MyClass() {};
    void PushBack(T value) {
        array.push_back(value);
    }
    T GetValue(int i) {
        return array[i];
    }
private:
    vector <T> array;
};
 
int main()
{
    vector<MyClass<uint32_t>> A ;
    MyClass<uint32_t> B;
    A.push_back(B);
    A[0].PushBack(1024);
    cout << A[0].GetValue(0) << "\n";
    system("pause");
    return 0;
}
Не рабочий:
main.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
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
113
114
115
116
117
118
119
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <random>
 
#include "Symbol.h"
#include "Random.h"
 
using namespace std;
 
 
template <typename T>
int GenerateTheAlphabet(ifstream &fin, vector<Symbol<T>> &alph)                     //Генерация алфавита
{
    Symbol<T> oneSymbol;
    char ch = NULL;
    bool checkRedo = false;
 
    while (fin.read((char*)&ch, sizeof(char)))                                      //Пока читаем
    {
        checkRedo = true;
 
        if (!alph.empty()) 
        {
            for (size_t i = 0; i < alph.size(); i++)
            {
                if (alph[i].Get_symbol() == ch) { checkRedo = false; break; }       //Проверка, есть ли этот символ в алфавите
            }
        }                   
        if (checkRedo == true) {                                                    //Если проверка пройдена, переписываем считанный из файла набор битов в контейнер под char
            oneSymbol.Set_symbol(ch);
            oneSymbol.Set_abyssAttribute(false);                                    //Атрибут ЧЯ - false
            alph.push_back(oneSymbol);                                              //Добавляем в алфавит
        }
    }
    
    return 0;
}
 
template <typename T>
int RandomShuffleVector(vector <Symbol <T>>& alph)  //Перемешать алфавит
{
    random_device rd;                               
    mt19937 g(rd());                                
    shuffle(alph.begin(), alph.end(), g);           //Перемешивание
    return 0;
}
 
template <typename T>
int WriteToOKFile(ofstream& fout, vector <Symbol <T>> alph) 
{
    for (size_t i = 0; i < alph.size(); i++)
    {
        char buf = alph[i].Get_symbol();
        fout.write((char*)& buf, sizeof(char));
    }
    return 0;
}
 
int main()
{
    ofstream fout;
    ifstream fin;
    string filepathOT;//Open Text
    string filepathOK;//Open Key
 
    do 
    {
        system("cls");
 
        cout << "For exit type: 'E'\nEnter filepath for target file:\n";
        cin >> filepathOT;
        
        if (filepathOT == "E")                                                  
        {
            exit(EXIT_SUCCESS);
        }
 
        fin.open(filepathOT, ios_base::in | ios_base::binary);                      
 
        if (!fin.is_open())                                                     
        { 
            cerr << "Can`t open " << filepathOT << " file for output\n";
            system("pause");
        }   
    } while (!fin.is_open());
 
    //auto filesizeOT = GetTheFileSize(filepathOT);
 
    system("cls");
 
    vector<Symbol<uint32_t>> alphabet;                                                      //Главный вектор
 
    cout << "File " << filepathOT << " has been opened successfully\n";
 
    GenerateTheAlphabet(fin, alphabet);                     
    RandomShuffleVector(alphabet);                      
 
    filepathOK += filepathOT;                       
    auto pointpos = filepathOK.find_last_of(".");;
    filepathOK.insert(pointpos, "openkey");
 
    fout.open(filepathOK, ios_base::out | ios_base::binary | ios_base::trunc);      
 
    if (!fout.is_open())                                    
    {
        cerr << "Can`t create " << filepathOK << " file for output\n";
        system("pause");
        return -1;
    }
    else {
        cout << "File " << filepathOK << " has been created successfully\n";
        WriteToOKFile(fout, alphabet);
    }
 
    return 0;
}
Symbol.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
35
36
37
38
39
#pragma once
#include <vector>
 
template <typename T>
class Symbol
{
private:
    bool abyssAttribute = false;                        
    T minLimit = numeric_limits<T>::min();                          
    T maxLimit = numeric_limits<T>::min();                          
    char symbol = 0;                                                
    vector <T> storage; //Из-за этой строки ошибка, если её убрать - все заработает                                                
 
public:
    Symbol() {};
    Symbol(bool abyss, T min, T max, char symb)
    {
        abyssAttribute = abyss;
        minLimit = min;
        maxLimit = max;
        symbol = symb;
    };
 
    //Set-functions
    void Set_abyssAttribute(bool value) { abyssAttribute = value; }
    void Set_minLimit(T value) { minLimit = value; }
    void Set_maxLimit(T value) { maxLimit = value; }
    void Set_symbol(char value) { symbol = value; }
 
    //Get-functions
    bool Get_abyssAttribute() { return abyssAttribute; }
    T Get_minLimit() { return minLimit; };
    T Get_maxLimit() { return maxLimit; };
    char Get_symbol() { return symbol; }
 
    //Switch-functions
    void Switch_abyssAttribute();
 
};
C++
1
Ошибки:
Кликните здесь для просмотра всего текста

Ошибка C2143 синтаксическая ошибка: отсутствие ";" перед "<" Symbol.h 12
Ошибка C2143 синтаксическая ошибка: отсутствие ";" перед "<" Symbol.h 12
Ошибка C4430 отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию Symbol.h 12
Ошибка C2238 непредвиденные лексемы перед ";" Symbol.h 12
Ошибка C4430 отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию Symbol.h 12
Ошибка C2238 непредвиденные лексемы перед ";" Symbol.h 12
Ошибка C2143 синтаксическая ошибка: отсутствие ";" перед "<" Symbol.h 12
Ошибка C4430 отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию Symbol.h 12
Ошибка C2238 непредвиденные лексемы перед ";" Symbol.h 12
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2020, 11:27
Ответы с готовыми решениями:

Почему на одном компьютере работает , а на другом - нет?
Почему одна и таже программа, написанная на C++ в CodeBloks на одном компьютере, не работает на...

Феномен в одном месте в другом нет
В комментариях все написано запустите прогу и увидете. Почему так? И как исправить? #include...

Код в одном проекте работает, в другом нет
Добрый вечер.у меня возникла такая проблема:я писала функцию по удалению оценок в одном проекте...

Программа со строками, в одном виде работает, в другом нет
Написал программу #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace...

4
139 / 67 / 46
Регистрация: 15.10.2015
Сообщений: 308
17.01.2020, 11:38 2
Лучший ответ Сообщение было отмечено Battary как решение

Решение

Battary,
C++
1
std::vector<T> storage; и что забыла функция main в .h файле.
1
5695 / 3134 / 1306
Регистрация: 07.02.2019
Сообщений: 7,874
17.01.2020, 11:41 3
<не актуально>
0
7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
17.01.2020, 11:53  [ТС] 4
Цитата Сообщение от Reavolt Посмотреть сообщение
Battary,
C++
1
std::vector<T> storage; и что забыла функция main в .h файле.
Очевидно же, что это cpp-ик, но да ладно. Спасибо за помощь
0
1097 / 371 / 82
Регистрация: 17.05.2015
Сообщений: 1,210
17.01.2020, 12:35 5
Цитата Сообщение от Battary Посмотреть сообщение
Рабочий:
Цитата Сообщение от Battary Посмотреть сообщение
using namespace std;
template <typename T>
class MyClass
Цитата Сообщение от Battary Посмотреть сообщение
Не рабочий:
Отсутствует:
Цитата Сообщение от Battary Посмотреть сообщение
using namespace std;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2020, 12:35
Помогаю со студенческими работами здесь

При одном кострукторе вызывется деструктор, при другом нет - почему?
Есть класс дерево, в нём вложен класс лист. В подклассе лист есть два конструктора: Node(int key,...

Почему в одном случае y=0, в другом - y=1 ?
#include &lt;iostream&gt; using namespace std; int main(int argc, char** argv) { int y; cout &lt;&lt; y;...

Сформировать DropDownList, одинаковый код в одном месте работает в другом нет
Есть следующие модели public class Fpsu { public int id { get; set; } ...

Datagridview! Почему в одном варианте работает, а в другом нет?!
надо было считать массив из *.ТХТ в датагридвью. сначала сделал так заполнение: for (int i = 0;...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru