Grębosz - Typy wyliczeniowe enum

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;
    }
}
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.

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.

0

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

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-installer?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5

0

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

zrzut.png

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).

1

@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
        }
    }
}
0

działa :) dziekuje

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