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

Недопустимый неполный тип - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 5.00
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
13.12.2012, 22:43     Недопустимый неполный тип #1
Здравствуйте! Помогите решить проблему с недопустимы полным типом. Код:
main.cpp
C++
1
2
3
4
5
6
7
8
9
#include "headers.h"
#include "support.h"
 
int main() {
 
    ss_array_2d<int> A(10); //Ошибка тут
 
    return EXIT_SUCCESS;
}
support.h
C++
1
2
3
4
#pragma once
 
template <typename sstype>
class ss_array_2d;
support.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
#include "headers.h"
#include "support.h"
 
template <typename sstype>
class ss_array_2d {
public:
             ss_array_2d(int);
             ss_array_2d();
            ~ss_array_2d();
 
    void     set_array(int);
    int      get_size();
    sstype  &operator[](int);
 
private:
    sstype * A;
    int      size;
};
 
template <typename sstype>
ss_array_2d<sstype>::ss_array_2d(int esize) {
 
    this->size = esize;
    A = new sstype [this->size];
    cout << "Class initialized, size of array is " << this->size << endl;
 
}
 
template <typename sstype>
ss_array_2d<sstype>::ss_array_2d() {
 
    this->size = -1;
    A = NULL;
    cout << "Class initialized, empty\n";
 
}
 
template <typename sstype>
void ss_array_2d<sstype>::set_array(int esize) {
 
    if(A) {
        
        delete A[];
        A = new sstype [esize];
        this->size = esize;
 
    } else {
 
        A = new sstype [esize];
        this->size = esize;
 
    }
}
 
template <typename sstype>
int ss_array_2d<sstype>::get_size() {
    return this->size;
}
 
template <typename sstype>
ss_array_2d<sstype>::~ss_array_2d() {
 
    if(A)
        delete A [];
 
}
 
template <typename sstype>
sstype& ss_array_2d<sstype>::operator[](int i) {
 
    return A[i];
 
}
Добавлено через 5 минут
При чём с конструктором A() программа компилируется, но сообщение из конструктора не выводится
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 22:43     Недопустимый неполный тип
Посмотрите здесь:

C++ выдаёт неполный ответ...
Недопустимый else без парного if C++
C++ union REGS rg; недопустимый неполный тип
Неполный тип C++
C++ error C3168: bool: недопустимый базовый тип для перечисляемого типа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
13.12.2012, 22:47     Недопустимый неполный тип #2
iRomul, в support.h должно быть нормальное описание класса
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
13.12.2012, 22:48     Недопустимый неполный тип #3
Цитата Сообщение от iRomul Посмотреть сообщение
При чём с конструктором A() программа компилируется,
чето я не увидел у тебя этот конструктор
Цитата Сообщение от iRomul Посмотреть сообщение
if(A)
* * * * delete A [];
по моему все таки
C++
1
 delete []A ;
да и проверку можешь выбросить если A = = NULL
то delete ничего страшного не сделает просто вернется да и все
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
13.12.2012, 22:48     Недопустимый неполный тип #4
DELETED.
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
13.12.2012, 22:53  [ТС]     Недопустимый неполный тип #5
I.M., спасибо, помогло! А я думал, что так тоже работает.

ValeryS, спасибо за советы! Разобрался с конструктором по умолчанию.
Yandex
Объявления
13.12.2012, 22:53     Недопустимый неполный тип
Ответ Создать тему
Опции темы

Текущее время: 07:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru