Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странный эффект наследования.... 
:(
    Опции темы
En_t_end
Дата 20.10.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Почему нельзя обращаться к public и protected структурам - членам базового класса из методов потомков ? Именно к структурам... очень странно.
PM MAIL ICQ Skype GTalk Jabber   Вверх
Дрон
Дата 20.10.2005, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



En_t_end
Блин... Ну ты же опытный участник, неужели сложно кусок кода в пример привести?

А то я не понимаю, что значит "обращаться к структурам"?

Это сообщение отредактировал(а) Дрон - 20.10.2005, 16:03


--------------------
Да. Именно так.
PM   Вверх
En_t_end
Дата 20.10.2005, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Ладно...
Код

bool LSockListen::Listen(const char *IP, const unsigned long PORT)
{
    closesocket(sock);
    addr.sin_addr = AF_INET;
    addr.sin_addr.S_un.S_addr = inet_addr(IP);
    addr.sin_port = htons(PORT);
    if((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
        return false;
    if((sock = bind(sock, (sockaddr*)&addr, sizeof(sockaddr_in))) == SOCKET_ERROR)
        return false;
    if(listen(sock, 1) == SOCKET_ERROR)
        return false;
    return true;
}

если LSockListen - потомок LSocket, в котором обьявлена public:
sockaddr_in addr;
PM MAIL ICQ Skype GTalk Jabber   Вверх
Дрон
Дата 20.10.2005, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



En_t_end
Издеваешься? smile

Структуру классов с наследованием покажи.
Добавлено @ 16:07
Короче, 50% на то, что у тебя тип наследования не указан -- а по умолчанию он private.


--------------------
Да. Именно так.
PM   Вверх
En_t_end
Дата 20.10.2005, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Код

class LSocket
{
public:
    LSocket();
    ~LSocket();
protected:
    WSADATA wsd;
public:
    SOCKET sock;
    sockaddr_in addr;
    bool IsAddZero;

    friend LSocket& operator <<(LSocket &LSocket,const char* message);
    friend LSocket& operator >>(LSocket &LSocket,char* buffer);
};

class LSock_fnew : public LSocket
{
public:
    unsigned long file_buf_size;
    bool SendFile(const char *Path);
    bool RecvFile(const char *Path);
};

class LSockListen : public LSock_fnew
{
public:
    bool Listen(const char *IP, unsigned long PORT);
    void Accept_atom(LSocket &sock_cl);
};

class LSockJoin : public LSock_fnew
{
public: 
    bool Connect(const char *IP, const unsigned long PORT);
};

PM MAIL ICQ Skype GTalk Jabber   Вверх
Дрон
Дата 20.10.2005, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Хмм...
Проблем быть не должно. К сожалению сейчас не могу проверить.


--------------------
Да. Именно так.
PM   Вверх
En_t_end
Дата 20.10.2005, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Цитата

Lsock.cpp(96) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
Lsock.cpp(98) : warning C4244: 'argument' : conversion from 'const unsigned long' to 'u_short', possible loss of data
Lsock.cpp(118) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
Lsock.cpp(120) : warning C4244: 'argument' : conversion from 'const unsigned long' to 'u_short', possible loss of data

Вот как ругается компилятор.... на предыдущий кусок кода.
PM MAIL ICQ Skype GTalk Jabber   Вверх
LPBOY
Дата 20.10.2005, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



Компилятор что говорит? smile
Добавлено @ 16:15
Понятно... smile
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
Дрон
Дата 20.10.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



En_t_end
Точно издеваешься! smile smile smile

Причём здесь наследование?!

Покажи 96 и 118 строки.


--------------------
Да. Именно так.
PM   Вверх
En_t_end
Дата 20.10.2005, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



LPBOY
Цитата(LPBOY @ 20.10.2005, 20:14)
Понятно...

Что ?
Блин... что-то мне подсказывает, что я туплю, но вот где, как всегда не понятно smile
PM MAIL ICQ Skype GTalk Jabber   Вверх
LPBOY
Дата 20.10.2005, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



Покажи еще определение sockaddr_in.
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
En_t_end
Дата 20.10.2005, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Дрон
Не издеваюсь... показал я их уже(96 - это тот метод Listen, 118 - это аналогичная операция в методе Connect.)
PM MAIL ICQ Skype GTalk Jabber   Вверх
Дрон
Дата 20.10.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



En_t_end

Исправь на
Код

        addr.sin_family = AF_INET;


Кто-нибудь, пристрелите меня! smile smile smile smile smile

Это сообщение отредактировал(а) Дрон - 20.10.2005, 16:20


--------------------
Да. Именно так.
PM   Вверх
En_t_end
Дата 20.10.2005, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Цитата(LPBOY @ 20.10.2005, 20:17)
определение

Это структура из стандартной библиотеки сокетов smile
Цитата

struct sockaddr_in {
        short  sin_family;
        u_short sin_port;
        struct  in_addr sin_addr;
        char    sin_zero[8];
};

PM MAIL ICQ Skype GTalk Jabber   Вверх
maxim1000
Дата 20.10.2005, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



addr.sin_addr = AF_INET...


--------------------
qqq
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1054 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.