Grębosz - Typy wyliczeniowe enum

2018-11-20 18:24
0

Witam
Typy wyliczeniowe enum,
Grębosz podaje prosty program, który niestety u mnie nie działa. Co robię w nim źle?

lista błędów:

-T-lista is not a class namespace (T_lista stan=T_lista::aaa;)
-expected nested-name-specifier before 'Tl' (using Tl=T_lista)
-'Tl' has not been declared (case Tl::aaa;)
-'Tl' has not been declared (case Tl::bbb;)
-'Tl' has not been declared (case Tl::ccc;)

p.s. edytuje kod, prosze nie usuwac!

#include <iostream>
using namespace std;
enum class T_lista {
                        aaa=100,
                        bbb=200,
                        ccc=300};
enum T_lista2 {
                     AAA,
                     BBB,
                     CCC};
int main(int argc, char*argv[])
{
    cout<<"Pozycja listy pierwszej"<<endl;
    T_lista stan=T_lista::aaa;
    using Tl=T_lista;
    switch(stan)
    {
        case    Tl::aaa:
                cout<<"*Pozycja pierwsza*"<<endl;
        break;
        case    Tl::bbb:
                cout<<"*Pozycja druga*"<<endl;
        break;
        case    Tl::ccc:
                cout<<"*Pozycja trzecia*"<<endl;
        break;
    }
}
edytowany 8x, ostatnio: furious programming, 2018-11-20 19:07

Pozostało 580 znaków

2018-11-20 18:29
1

A potrafisz przeczytac komunikat?
Po 1 Struktura nie moze byc enumeratorem i klasa jednoczesnie

enum T_lista {
                        aaa=100,
                        bbb=200,
                        ccc=300
};

Po drugie nigdzie nie definiujesz struktury T1 ktora probojesz uzyc.

@hauleth: kajam sie :) Masz racje :) Ale wtedy trzeba przeciazac operator << z tego co widze? Tak? - daniel1302 2018-11-20 18:37
Nie, nie "trzeba". Można przeciążyć. - hauleth 2018-11-20 18:39

Pozostało 580 znaków

2018-11-20 18:37
4

A jesteś pewien, że kompilujesz używając C++11? Bo AFAIK zarówno GCC jak i clang domyślnie używają C++03 a C++11 trzeba włączyć flagami. Mi podany kod się kompiluje jak użyjesz clang -std=c++11.

Pozostało 580 znaków

2018-11-20 18:40
0

@dontpanic:
Teraz Twoj kod wyglada poprawnie, prawdopodobnie masz zla wersje kompilatora: https://wandbox.org/permlink/IFmFUVjZAk4q3ig3

Pozostało 580 znaków

2018-11-20 18:46
0

Qt 5.11.2 (i386-little_endian-ilp32 shared (dynamic) release build; by MSVC 2015) on "windows"

pobierana z: https://www.qt.io/download-qt[...]f-9bb5-4778-ab02-bfb62735f3e5

edytowany 1x, ostatnio: dontpanic, 2018-11-20 18:47
i386? To jeszcze są w użyciu 32-bitowe Intele? - hauleth 2018-11-20 18:59
ja mam 64 bitowy. czy w tym może tkwić problem z kompilacją? - dontpanic 2018-11-20 19:00
Nie, ale bez sensu jest pobierać kompilator 32-bit jak masz 64-bity. Co do kompilacji to zobacz czy gdzieś w ustawieniach projektu nie masz by przełączyć się z C++03 na C++11 (lub wyżej). Ja znalazłem tyle https://stackoverflow.com/a/16950073/1017941 - hauleth 2018-11-20 19:02

Pozostało 580 znaków

2018-11-20 21:56
0

szukałem tych opcji ale nie moge znaleźć
ale otworzyłem nowy projekt i jest tam taka informacja:

zrzut.png

edytowany 1x, ostatnio: furious programming, 2018-11-21 00:01
Obrazki wstawiamy do załączników, nie na zewnętrzne hostingi. - furious programming 2018-11-21 00:02

Pozostało 580 znaków

2018-11-20 23:16
3

Nie jestem specem od Qt, ale AFAIK to w roocie projektu masz plik .pro, i w tym pliku masz sobie dodać CONFIG += c++11 (cytując za StackOverflow, które z kolei ma info stąd).

Odpowiedź można by w sumie uznać za dobrą ale nie zawsze w projekcie jest ten plik dostępny. Jeśli projekt jest "typu" Qbs to jest tam trochę inna struktura plików. - grzesiek51114 2018-11-21 08:00
Qbs jest deprecated niestety :​( - kq 2018-11-21 11:49

Pozostało 580 znaków

2018-11-21 07:56

@dontpanic: w pliku qbs w projekcie dopisz zaznaczoną linijkę:

import qbs

Project {
    minimumQbsVersion: "1.7.1"

    CppApplication {
        consoleApplication: true
        files: "main.cpp"
        cpp.cxxLanguageVersion: "c++11"    // Wsparcie dla C++11

        Group {     // Properties for the produced executable
            fileTagsFilter: "application"
            qbs.install: true
        }
    }
}
edytowany 3x, ostatnio: furious programming, 2018-11-21 08:13

Pozostało 580 znaków

2018-11-21 11:21
0

działa :) dziekuje

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0