Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с CFormView и CListBox 
:(
    Опции темы
Найли
  Дата 1.6.2005, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблема заключается в следующем:
Я сделала для моего вида базовым CFormView,далее в реадкторе ресурсов запихала туда CListBox, потом в ClassWizard'e создала переменную для моего класса вида CListBox Control
Вот отрывок из кода с объявлением класса, переменной и необходимой мне функции

Код

class CCharView : public CFormView
{
protected: // create from serialization only
    CCharView();
    DECLARE_DYNCREATE(CCharView)

public:
    //{{AFX_DATA(CCharView)
    enum { IDD = IDD_RGR_FORM };
    CListBox    m_List;
    //}}AFX_DATA

// Attributes
public:
    CCharDoc* GetDocument();
    static void Addstr(char *s);
// Operations

Вот сама функция
Код

void CCharView::Addstr(char *s)
{
    m_List.AddString(s);
}

а проблема в том, что выдается ошибка error C2228: left of '.AddString' must have class/struct/union type
Я не понимаю почему VC не видит мою переменную...
Была бы очень признательна быстрой помощи.... так как сроки пожимают, а без этого я не могу продолжить... =((

PM MAIL ICQ   Вверх
kometa_triatlon
Дата 1.6.2005, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так же ничего не видно... Покажи весь код, а лучше выложи проект. Может там просто инклуда нужного нет, хоть это и вряд ли.


--------------------
Всё очень просто: сказки обман,
Солнечный остров скрылся в туман,
Замков воздушных не носит земля,
Кто-то ошибся, ты или я.

--------------
Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым.
PM MAIL ICQ   Вверх
Амортизатор
Дата 1.6.2005, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Судя по всему, просто отсутствует инклюд файла с классом CCharView. Где реализована эта функция? Если не в файле CCharView.cpp (или как он у вас там называется), возможно в самом деле нет инклюда.


--------------------
Поехали!
PM MAIL   Вверх
kometa_triatlon
Дата 1.6.2005, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Амортизатор
Судя по коду, программа создавалась визардом. Если это так, то вряд ли нет инклуда, разве что удалила по ошибке...


--------------------
Всё очень просто: сказки обман,
Солнечный остров скрылся в туман,
Замков воздушных не носит земля,
Кто-то ошибся, ты или я.

--------------
Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым.
PM MAIL ICQ   Вверх
Dov
Дата 2.6.2005, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



убери static в объявлении ф-ции.


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Найли
Дата 2.6.2005, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Если убрать статик, то пишет, что не законный вызов нестатической функции члена.
Все инклуды на месте. =(

PM MAIL ICQ   Вверх
Lion
Дата 2.6.2005, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
Код

class CCharView : public CFormView
{
....
    static void Addstr(char *s);
....

а проблема в том, что выдается ошибка error C2228: left of '.AddString' must have class/struct/union type
Я не понимаю почему VC не видит  мою переменную...

Правильно не видит. Соб-но цитата:

“Статические функции – члены класса не получают указатель this, соответственно эти функции не могут обращаться с нестатическим членам класса.”
Б.И. Березин, С.Б. Березин, “Начальный курс С и С++”.


Функцию объявить просто как void. И если уж вы все равно используете MFC, почему бы вам не использовать CString. Будет удобнее.

На счет второй ошибки, внимательно посмотреть где и как вы вызываете вашу функцию.
PM MAIL   Вверх
Найли
Дата 2.6.2005, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вообще убрала эту функцию....
у меня есть глобальная функция...она пишется в документе CharView.cpp
Код


void my_print(int num, char * s)
{
    m_List.AddString(s);
}

Использую именно char*, так как это было необходмо в старой курсвой работе..а счас мне надо просто напистаь под нее виндоус приложение... это не сложно, загвоздка у меня тока в том, что не могу добавить строку в листбокс в "виде". =(

Это сообщение отредактировал(а) Найли - 2.6.2005, 13:16
PM MAIL ICQ   Вверх
Lion
Дата 2.6.2005, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
вообще убрала эту функцию....
у меня есть глобальная функция...она пишется в документе CharView.cpp
Код


void my_print(int num, char * s)
{
    m_List.AddString(s);
}

Использую именно char*, так как это было необходмо в старой курсвой работе..а счас мне надо просто напистаь под нее виндоус приложение... это не сложно, загвоздка у меня тока в том, что не могу добавить строку в листбокс в "виде". =(

Уважаемая, не надо крайностей. smile Не надо глобальных функций.

Вам надо на форме отобразить список, правильно? ОК. Добавьте в класс формы функцию типа void, для добавления строки. Вам в общем надо было просто убрать static. Далее надо посмотреть, где и как вы пытаетесь ее вызывать. smile

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


 




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


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

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