1 Востаннє редагувалося Юра_Максименко (29.08.2016 00:14:29)

Тема: error: invalid types 'const char[unsigned int]'

Доброї пори доби всім!
З минулими святами!


Подивитьсяудь ласка. Я таку нисенитницю почав писати, що й сам заплутався.
Сам у себе в коді побачів таки ляпи що аж не знаю як я їх написав.Та код не ствв краще.
Я насправді і не вмію толком писати. Так що одразу ж прошу вибачення, мені навіть дуже соромно.
Подивіться, будь ласка, що це за помилка.В цьому рядку

kin = (const char *)&potsjatok_tym[dovzhrakhu(potsjatok_tym)];
така помилка, компілятор мені щось пише error: invalid types 'const char[unsigned int]' for array subscript

Я повинен був отримати зрушення на потрібну кількість, до кінця рядка, і це неначе сповна має сенс.
Так чі інакше, не зміркую, в чому проблема.

Не знаю як назвати тему, нехай по назві самої помилки.

//Dovjina.cpp
/*  Змінні я позначу так, що б вони трохи нагадували мені про те що вони таке */
class Dovjina
    {
        private:

           unsigned int Dov;
           const char potsjatok;
           const char kin;

        public:
            
            unsigned int  dovzhrakhu(const char *ch) // unsigned int завжди позитивне
                      {
                        return moianaishvydshadovzhyna(*ch);  // найшвидше у світі обчислення
                      } 

            Dovjina(const char potsjatok_tym): potsjatok( potsjatok_tym)  // Думка розвивається поступово і хочеться далі більше
            {
                kin = (const char *)&potsjatok_tym[dovzhrakhu(potsjatok_tym)];  //
                
                Dov = dovzhrakhu(potsjatok_tym);

            };
            
            //Window::Pane::Pane() : x(0), y(0) { }
            
             Dovjina(const char * ch) {*this = D;}
    // конструктор початковий варіант обнулюючій
    Dovjina(): Dov(0), potsjatok(NULL), kin(NULL) {}
            
            ~Dovjina(){};   // Це деструктор, він видаляє обект коли той більш не потрібен.                          
            
            
        void postavyty_Dov(const char * ch)
    {
        
                Dov = dovzhrakhu(const char *ch);
        
    }


    void postavyty_potsjatok(const char * ch)
    {
        
                potsjatok =  ch;
    }
            
    
    void postavyty_kin(const char * ch)
    {
        
                kin = (const char *)&potsjatok_tym[dovzhrakhu(ch)];; 
    }

   
         Dovjina &operator= (const char * ch)
    {
                postavyty_potsjatok;
                postavyty_Dov(const char * ch);
                postavyty_kin;
                return *this;
    }

    
         Dovjina &operator+=(const char * ch)
    {
               *this = vziaty_Dov()+dovzhrakhu(ch);
               *this = vziaty_potsjatok()+ch;
               *this = vziaty_kin()++ch;
       
       return *this;
    }    
           // void fileWork ( std::ofstream & f );
           
           
    unsigned int vziaty_Dov()
    {  
        return  Dov;  
    }    
    
    const char vziaty_potsjatok()
    {  
        return  potsjatok; 
    }
    
    const char vziaty_kin()
    {  
        return  kin;  
    }


    
    };
    
    
    unsigned int Dovjina::moianaishvydshadovzhyna(char *ch)
    {    
       unsigned int S;
        _asm      
                 mov     ecx, 0FFFFFFFF
                 mov     edx, [ch]
               mov     eax, 0
                mov     edi, edx
                 repne scasb
                mov     eax, ecx
                 not     eax
                sub     eax, 1
                mov     S, eax
        asm
            
        return     S;        
    };

2

Re: error: invalid types 'const char[unsigned int]'

const char kin;

об'являєте як константу (її ж змінювати не можна), а використовуєте як змінну.

Подякували: Юра_Максименко, leofun012

3

Re: error: invalid types 'const char[unsigned int]'

Дуже дякую!!!!  Дуже дякую.

4

Re: error: invalid types 'const char[unsigned int]'

А ще ви постійно плутаєте char і char * - власне, компілятор вам пише саме про це, до модифікації константи він не встигає дістатися.

Подякували: leofun01, Юра_Максименко2

5 Востаннє редагувалося Юра_Максименко (30.08.2016 20:36:50)

Re: error: invalid types 'const char[unsigned int]'

Так, і справді, я чомусь гадав що це одне й те саме, або взагалі і не думав, а тому використав їх як бог на душу покладе.
Спасибі!!!   Мені я бачу потрібен саме char*.

По-друге, в мене не хватає тями щоб таки зрозуміти що далі не так.. Хвилин десять на код п_ялюся, не розумію.
З непробивною силою нерозумію.
Якщо можливо поправьте мене ще.

А, я за хлібом, молоком та салакою, так що мене хвилис сорок не буде, або трохи більш.


Прошу вибачення, то я дійсно багато чого зовсім єлементарного не бачів, зовсім простого.
І ще мене квапили.

6 Востаннє редагувалося Юра_Максименко (03.09.2016 15:12:51)

Re: error: invalid types 'const char[unsigned int]'

#include <cstdlib>
#include <windows.h>
#include <stdio.h>
//Dovjina.cpp
/*  «м≥нн≥ ¤ позначу так, що б вони трохи нагадували мен≥ про те що вони таке */
class Dovjina
    {
        protected:

           unsigned int Dov;
            char *potsjatok;
            char *kin ;

        public:

            unsigned int Dovjina::moianaishvydshadovzhyna(char *ch);

            unsigned int  dovzhrakhu( char *ch) // unsigned int завжди позитивне
                      {
                        return moianaishvydshadovzhyna(*ch);  // найшвидше у св≥т≥ обчисленн¤
                      }

            Dovjina( char* potsjatok_tym): potsjatok( potsjatok_tym)  // ƒумка розвиваЇтьс¤ поступово ≥ хочетьс¤ дал≥ б≥льше
            {
                kin = ( char *)&potsjatok_tym[dovzhrakhu(potsjatok_tym)];  //

                Dov = dovzhrakhu(potsjatok_tym);

                printf("Dovjina( char* potsjatok_tym): potsjatok( potsjatok_tym)");

            };

            //Window::Pane::Pane() : x(0), y(0) { }

            Dovjina::Dovjina(unsigned int& D, char*& p, char*& k)  {Dov=D;  potsjatok=p; kin=k;
                 printf("Dovjina::Dovjina(unsigned int& D, char*& p, char*& k)  {Dov=D;  potsjatok=p; kin=k;")
            ;}

            // Dovjina( char * ch) {*this = ch;}
    // конструктор початковий вар≥ант обнулююч≥й
    Dovjina(): Dov(0), potsjatok(NULL), kin(NULL) {
        printf("Dovjina(): Dov(0), potsjatok(NULL), kin(NULL)");
    }

            ~Dovjina(){};   // ÷е деструктор, в≥н видал¤Ї обект коли той б≥льш не потр≥бен.


        void postavyty_Dov( char * ch)
    {

                Dov = dovzhrakhu(  *ch);

    }


    void postavyty_potsjatok( char * ch)
    {

                potsjatok =  *ch;
    }


    void postavyty_kin( char * ch)
    {

                kin = ( char *)&ch[dovzhrakhu(ch)];;
    }


         Dovjina &operator= ( char * ch)
    {
                postavyty_potsjatok(ch);
                postavyty_Dov(ch);
                postavyty_kin(ch);;
                return *this;
    }


         Dovjina &operator+=( char * ch)
    {
               *this = vziaty_Dov()+dovzhrakhu(ch);
               *this = vziaty_potsjatok()+ch;
               *this = vziaty_kin()+ch;

       return *this;
    }
           // void fileWork ( std::ofstream & f );


    unsigned int vziaty_Dov()
    {
        return  Dov;
    }

    char vziaty_potsjatok()
    {
        return  potsjatok;
    }

    char vziaty_kin()
    {
        return  kin;
    }



    };


/*    unsigned int Dovjina::moianaishvydshadovzhyna(char *ch)
    {
       unsigned int S;
        _asm
                 mov     ecx, 0FFFFFFFF
                 mov     edx, [ch]
               mov     eax, 0
                mov     edi, edx
                 repne scasb
                mov     eax, ecx
                 not     eax
                sub     eax, 1
                mov     S, eax
        asm

        return     S;
    };
*/

    unsigned int Dovjina::moianaishvydshadovzhyna(char *ch)
    {
       unsigned int result = 0;
         while (*ch++) ++result;
       return result;
    }


/*
   class A
{
private:
    int a;
    int b;
public:
    A(int _a, int _b): a(_a), b(_b) {}

};

class B
{
private:
    A test; //Ќе работает
    A test2;
public:
    B(int m, int n)
    { //≈сли сделать так то ругаетс¤ на этой строчке
        A tmp(m,n);
        test2 = tmp;
    }

    B(int m, int n) : test(5,5), test2(6,6){}
};

 // ќбъект класса внутри другого класса


   void message() // функци¤ (метод класса) вывод¤ща¤ сообщение на экран
    {
        cout << "website: cppstudio.com\ntheme: Classes and Objects in C + +\n";
    }
*/

class Spilkuvannia : public Dovjina
{
   public:

       Spilkuvannia(char* inCaption)
   {
           Caption=inCaption;
   }

   Spilkuvannia(char *potsjatok=NULL, char* inCaption=NULL) : Dovjina 
               ( potsjatok )
    {

        this->Caption = inCaption;
    }



   private:

       char* Caption;

   public:

       pokaz()

       {
           char* temp = vziaty_potsjatok();
           printf(temp);
       }
};






    int main()
{


    //SS =5545;

    Dovjina mbakajumba = "mbakajumba";
    Spilkuvannia tumbaj = "tumbaj";
//    tumbaj=mbakajumba;
    tumbaj.pokaz();
    return 0;
}

Доброго всім часу знову!

У мене не вистачає розуміння як правильно будувати і використовувати конструктор. Загальне розуміння є, але на ділі я як то не тямлю, тобто все одно щось мені не зрозуміло. Це моя перша програма з класами. Як правильно побудувати конструктор?


Spilkuvannia tumbaj = "tumbaj";  Main.cpp|216|error: conversion from 'const char [7]' to 'Spilkuvannia' is ambiguous

Помилка: перетворення з 'сопзЬ сЬаг [7]' до 'Spilkuvannia' неоднозначний |

Чого?

7

Re: error: invalid types 'const char[unsigned int]'

У вас два конструктори:  Spilkuvannia(char*) і Spilkuvannia(char*=NULL,char*=NULL). Якщо викликати без параметрів чи з двома параметрами - то це очевидно другий конструктор. Але з одним параметром може бути викликаний і перший, і другий конструктор, що створює неоднозначність.

А ще код просто страшний. Вирівняйте його по людськи і заведіть якусь систему контролю версій, щоб не тримати закоментовані фрагменти, а то жах якийсь.
Крім того, гадаю, компілятор вам ще багато попереджень видає. Не ігноруйте їх, там багато корисного.
По бібліотеках. Перший рядок біс із ним (хоча де ви використовуєте функції з цієї бібліотеки?), а нащо ви windows.h підключаєте? Вам цікаво дивитися на зайві кілька секунд збірки? Не кажу вже, що в C++ stdio.h давно вже cstdio зветься, і замість нього краще iostream використовувати.
Ну і використовуйте std::string для рядків, це зменшить навантаження на мозок на порядок.

Подякували: Юра_Максименко, leofun012

8

Re: error: invalid types 'const char[unsigned int]'

Дуже дякую!!!!!

9

Re: error: invalid types 'const char[unsigned int]'

А чи можна викласти код яким нибудь засобом так, що б кожен міг редагувати, сервіс який небудь такий або ще спосіб? Ніби громадський код.
Саме от як код, а не серйозний проект.

10

Re: error: invalid types 'const char[unsigned int]'

Юра_Максименко написав:

А чи можна викласти код яким нибудь засобом так, що б кожен міг редагувати, сервіс який небудь такий або ще спосіб? Ніби громадський код.
Саме от як код, а не серйозний проект.

1) Ґітхаб. Кожен може зробити свій форк проекту, внести до нього зміни, після чого, при бажанні, зробити пул-реквест в основний проект (?), або ж автор проекту може додати інших користувачів як контрибуторів і писати код разом з ними. «Проект» може бути несерйозним і складатися з одного файлу :) . Хоча так, дещо морочливо.
2) Підняти власну вікі з прикладами коду. З точки зору перспектив подальшого розвитку опублікованих таким чином програм, не надто зручно, хоча як колекція фрагментів коду — зійде.

Подякували: Юра_Максименко, leofun012

11

Re: error: invalid types 'const char[unsigned int]'

Юра_Максименко написав:

А чи можна викласти код яким нибудь засобом так, що б кожен міг редагувати, сервіс який небудь такий або ще спосіб? Ніби громадський код.
Саме от як код, а не серйозний проект.

Один файл - ideone.com, там хто завгодно може клонувати його і відредагувати. Я, до речі, саме на ньому ваш код перевіряв: http://ideone.com/REnA3r

Подякували: Юра_Максименко, leofun012

12 Востаннє редагувалося Юра_Максименко (04.09.2016 00:56:07)

Re: error: invalid types 'const char[unsigned int]'

Спасибі, koala!!!!!!!!!!!



Ось начебто форк https://ideone.com/pAhQzj
Я можливо все-таки на гітхубі буду, там підсвічування коду яскравіше

13

Re: error: invalid types 'const char[unsigned int]'

Як залити що-небудь на гітхаб? Я не цілком розібрався.
Підкажіть будь ласка. Генерувати всякі супер коди, це що, обов'язково? У мене TortoiseSVN і TortoiseGit.
Просто намагаюся відправити код, пише помилка "git did not exit cleanly (exit code 1)"

14

Re: error: invalid types 'const char[unsigned int]'

Ось тут купа порад: http://stackoverflow.com/questions/2216 … xit-code-1

15 Востаннє редагувалося Юра_Максименко (06.09.2016 16:21:12)

Re: error: invalid types 'const char[unsigned int]'

А, та я бачів вже. Передививсь ще раз.  Тобто exit code 1 це Actually, this error message just says that there is some problem but no specifications of the problem. Не-описана така проблема.

Гаразд, я ще почітаю. Ще щось спробую.

Там взагалі ключі якись потрібно генерувати, мабуть я зараз це й зроблю.

16

Re: error: invalid types 'const char[unsigned int]'

http://maxsite.org/page/how-to-put-your … github-com

Постарався залити один файл на Гітхаб. Слідував загалом цьому опису що зверху. БОГ мій! Що туди залилося ?? Морок файлів, екзешніки.. Я не розумію що я бачу! !!!
Використовував C:\PortableGit-2.10.0\PortableGit,  git-bash.exe.
Лив на https://github.com/Jurmv/my-cool-new-classes-.

Подякували: leofun011

17

Re: error: invalid types 'const char[unsigned int]'

Проблема в інструкції git add . , яка приєднує до репозиторію все, що бачить у директорії. Це має сенс, якщо там початково нема нічого зайвого, але, в вашому випадку, зайве там є, тому треба робити так:
      git add *.c (щоб додати всі наявні файли з розширенням .c)
або так:
      git add myprogram.cpp (додати лише конкретний файл myprogram.cpp)
Іншими словами, треба вказувати імена конкретних файлів, які будуть розміщені в репозиторії.

Подякували: Юра_Максименко, leofun012

18

Re: error: invalid types 'const char[unsigned int]'

Краще створити файл .gitignore, ось приклад:
https://gist.github.com/octocat/9257657

Подякували: Юра_Максименко, leofun012

19

Re: error: invalid types 'const char[unsigned int]'

Дуже дякую!!

20

Re: error: invalid types 'const char[unsigned int]'

І ще, будь ласка, подивиться. Прога ось тут падає, сигнал SIGSEGV.

public:

       pokaz()

       {
           char* temp = vziaty_potsjatok();
           printf(temp);      // чомусь тут трапляється падіння, викидується табличка сигнал SIGSEGV. 
       }
};

Що йому?  Може printf(temp); дописати з якимось особливим знаком? Форматом?
Може змінна char* temp не така, щось із нею негаразд?
Мені як не дивлюся, здається що те що я бажав написати я написав, і так воно й повинно бути.

Гітхаб мене прийняв за робота, я написав їм що я людина і спробую там код і викладати.