Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Ф-ция класса не видит переменную иного класса


Автор: NDQuattro 31.3.2010, 21:10
Код

class Arr
{
    public:
        Arr();
        ~Arr() {}
    private:    
        int n;
        char *m;
};

class Arrays
{ 
    public:
        Arrays() {}
        ~Arrays() {}
        void Input();
        void Output();
    private:
        Arr m1;
        Arr m2;
};

Arr::Arr()
{
    n = 100;
    m = new char [n];
}

void Arrays::Input()
{
    cout << "Type 1st string:"; 
    cin.getline(m1.*m,100);  // <-------------- НЕ ВИДИТ 'm'
    cout << "Type 2nd string:";
    cin >> m2.*m;  // <-------------- НЕ ВИДИТ 'm'
}


Че-то я не понимаю чего-то ...

Автор: djamshud 31.3.2010, 21:18
Глаза человека не видят ошибок, выдаваемых компилятором.

И че-то он не понимет чего-то.

PS.
Код

m1.m
m2.m

Автор: NDQuattro 31.3.2010, 21:30
huh... благодарен  smile   
а m1.m не указатель на 0-ой элемент массива? 

Автор: borisbn 31.3.2010, 21:33
m1.m - указатель на 0-ой элемент массива.
Если нужно получить первый элемент, то m1.*m - неправильно. нужно *(m1.m)

Автор: djamshud 31.3.2010, 21:34
>а m1.m не указатель на 0-ой элемент массива? 

Да, и по совместительству указатель на всю строку. Вы очевидно пытались сделать *m1.m, тогда со стандартного ввода считалась не строка, а только первый символ, т.е. *m1.m - непосредственный доступ к первому элементу массива.

Добавлено через 31 секунду
ЗЫ. Первому по счету, т.е. нулевому по порядку.

Автор: xvr 1.4.2010, 15:14
Только компилироваться все равно не будет - m в Arr стоит в private секции, т.е. доступ к ней НЕ ИЗ Arr запрещен

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)