1

Тема: Допоможіть розібратися з кодом і заодно якусь теорію киньте по темі

class String
{
protected:
   enum{SZ=80}
   char str[SZ];
public:
   String() {str[0]='/0';}
   String(char* s){strcpy(str,s);}
   operator char*()
   {return str;}
};

class PSt
{
public:
PSt(char* s) {if (...) ...; else String (s);//видає помилку - зміна формального параметра s }
};

2

Re: Допоможіть розібратися з кодом і заодно якусь теорію киньте по темі

Код треба брати в теги

code

Хіба, ні???

3

Re: Допоможіть розібратися з кодом і заодно якусь теорію киньте по темі

Можете показати текст помилки?

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

4

Re: Допоможіть розібратися з кодом і заодно якусь теорію киньте по темі

Підтримую quez.
І, крім того, цей вираз не має сенсу. Подумайте про такий код:

if(...)...;else int(5);

Він по суті не відрізняється від вашого.

5

Re: Допоможіть розібратися з кодом і заодно якусь теорію киньте по темі

class PSt
{
public:
    PSt(char* s) 
    {
        (String(s));
    }
};

Ось так працює.

6

Re: Допоможіть розібратися з кодом і заодно якусь теорію киньте по темі

Може, розкриєте мені таємницю: що воно робить?

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

7

Re: Допоможіть розібратися з кодом і заодно якусь теорію киньте по темі

koala написав:

Може, розкриєте мені таємницю: що воно робить?

Я не впевнена, але здається, що це випадок одного з недоліків с++.
Так званого Most Vexing Parse.
Схоже на те, що компілятор не бачить строку String(s), як створення об'єкту відповідного класу. А як об'явлення функції, яка приймає аргумент деякого типу s, і яка не має тіла.
Краще почитайте про це в інтернеті, бо я ще не дуже добре вмію пояснювати свої думки. :)

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

8 Востаннє редагувалося koala (25.07.2014 15:30:55)

Re: Допоможіть розібратися з кодом і заодно якусь теорію киньте по темі

Ні, я не причину виникнення помилки - я про те, що має робити, скажімо, ваш код?

у мене там...

warning: statement has no effect

9

Re: Допоможіть розібратися з кодом і заодно якусь теорію киньте по темі

koala написав:

Ні, я не причину виникнення помилки - я про те, що має робити, скажімо, ваш код?

у мене там...

warning: statement has no effect

Мій варіант запису зробить те, що хотів ТС. Викличе конструктор класу String і передасть йому параметр s.

А у вас ворнінг же, а не еррор.
До того ж, у коді ТС не має мейну.

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

10

Re: Допоможіть розібратися з кодом і заодно якусь теорію киньте по темі

ts може питати за бібліотеку класів, а не виконуваний файл.
А конструктор String не робить нічого, крім (несподівано) створення рядку. І цей рядок буде одразу знищений. То в чому сенс? Автор мав на увазі, гадаю, щось інше, але що?

11

Re: Допоможіть розібратися з кодом і заодно якусь теорію киньте по темі

koala написав:

ts може питати за бібліотеку класів, а не виконуваний файл.
А конструктор String не робить нічого, крім (несподівано) створення рядку. І цей рядок буде одразу знищений. То в чому сенс? Автор мав на увазі, гадаю, щось інше, але що?

Гадаю, що ТС потрібна була допомога с виникшою помилкою. Я ії вирішила. Але я не вангіст, щоб знати, що ще там треба виправити.

12

Re: Допоможіть розібратися з кодом і заодно якусь теорію киньте по темі

Мені здається, ts була потрібна допомога зі здачею заліку, і він її вирішив без нас, оскільки вже два тижні ніц не пише.