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

сконструировать класс - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проблема наследования от шаблонного класса. http://www.cyberforum.ru/cpp-beginners/thread346786.html
Привет всем! У меня есть шаблонный класс, и наследуемый от него шаблонный класс. Базовый: #include "Lgraph.h" #include "Mgraph.h" template <class Edge>
C++ Число прописью, от 1 до 99 на русском Программа работает, но не совсем правильно, отлично выводит числа от 1 до 20 потом при вводе 21 - выводит один один; 47 - выводит семь семь; 83 - выводит три три. Помогите исправить ошибку. #include <iostream> #include <windows.h> using namespace std; char*Rus(const char* text); http://www.cyberforum.ru/cpp-beginners/thread346741.html
C++ Как правильно записать?
y=sin|x|/0,1+9,4sin(3x-2,5) Добавлено через 13 минут матем. формулу
Подскажите C++
Вот начал изучать с++ с 0. Столкнулся с проблемой уже в самом начале...подскажите плиз что не так... #include <iostream.h> class DataClass { private : int PrivateDataMember; public :
C++ "Длинная" арифметика в рекурсии http://www.cyberforum.ru/cpp-beginners/thread346731.html
Как реализовать длинную арифметику в рекурсии типа N! = 1 * 2 * 3 * … * (N-1) * N. Да и вообще, не откажусь от информации в общем о длинной арифметике.
C++ Количество введенных слов Вот что я смог сделать с этим заданием. И еще if по книге я еще не проходил, но применил больше вариантов не нашел. #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); cout << "Ââåäèòå ñëîâà (äëÿ çàâåøøåíèÿ ââåäèòå ñëîâî done):\n"; подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
31.08.2011, 18:32     сконструировать класс
Цитата Сообщение от Bobster Посмотреть сообщение
Добрый день. Мне надо сконструировать следующий класс:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class LogicElement {
public:
    // constructors / destructor
    LogicElement(const char *ElementType, int nIpiNmb );
    LogicElement(const LogicElement &);
    ~LogicElement();
    //methods
    void SetInputs(const bool *inputs);
    bool Evaluate();
    void PrintStatus();
private:    
    char *name;// имя элемента  
    int inp_nmb; // количество входов элемента
    bool *inputs;//входные сигналы
};
Но при построении появляется ошибка:
Run-Time Check Failure #3 - The variable 'inputs' is being used without being initialized.
Как правильно ее инициализировать?
Вот код программы:

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
#include "header.h"
#include "stdio.h"
#include "string.h"
 
LogicElement::LogicElement(const char *ElementType, int nIpiNmb ){  
    name = new char[ strlen(ElementType) + 1 ]; 
    strcpy(name, ElementType);
    inp_nmb = nIpiNmb;
    inputs = new bool;
}
 
LogicElement::LogicElement(const LogicElement &q){
    name = new char[ strlen(q.name) + 1 ];
    strcpy(name, q.name);
    inp_nmb = q.inp_nmb;
    inputs = new bool;
}
 
LogicElement::~LogicElement(){
    
    delete[] name;
    inp_nmb = 0;
    delete[] inputs;
}
 
bool LogicElement::Evaluate(){
    bool b;
    int i;
    b=0;
    
    if (name=="AND")
        for (i=0; i<inp_nmb; i++){
            b = b && (*inputs);
            inputs++;
        };
    if (name=="OR")
        for (i=0; i<inp_nmb; i++){
            b = b || (*inputs);
            inputs++;
        };
    if (name=="XOR")
        for (i=0; i<inp_nmb; i++){
            b = (b || (*inputs)) && !(b && (*inputs));
            inputs++;
        };
    if (name=="ANDNEG")
        for (i=0; i<inp_nmb; i++){
            b = !(b && (*inputs));
            inputs++;
        };
    if (name=="ORNEG")
        for (i=0; i<inp_nmb; i++){
            b = !(b || (*inputs));
            inputs++;
        };
    return b;
};
 
void LogicElement::SetInputs(const bool *Inputs){
    int i;
    for (i=0; i<inp_nmb; i++)
        if (i/2==0){
            *inputs=0;
            inputs++;
        }
        else {
            *inputs=1;
            inputs++;
        }
};
 
void LogicElement::PrintStatus(){
    printf("%s %d\n", *name,inp_nmb);
}
 
 
 
 
#include "header.h"
#include "stdio.h"
 
 
int main(){
    char *s;
    s="AND";
    LogicElement x(s,2);
    bool *inputs; 
    x.SetInputs(inputs);
    x.Evaluate();
    x.PrintStatus();
return 0;
};
На мой вгляд, у вас вообще безграмотно определен класс.
Я не вижу никакого смысла объявлять указатель на bool вместо самого члена класса типа bool. Какой глубокий смысл состоит в том, чтобы выделять указатель на bool? Во-первых, вы не инициализируете свою переменную inputs значением при создании объекта вашего класса. То есть в этом члене содержится некий мусор. Во-вторых, в своей функции

C++
1
void LogicElement::SetInputs(const bool *Inputs)
вы передаваемыфй параметр Inputs вообще не используете. Спрашиваете, а зачем он тогда присутствует в объявлении вашей функции?!
 
Текущее время: 15:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru