Форум программистов, компьютерный форум CyberForum.ru

Ошибка создания экземпляра класса - C++

Восстановить пароль Регистрация
 
login
2 / 1 / 0
Регистрация: 16.04.2009
Сообщений: 90
21.04.2011, 23:46     Ошибка создания экземпляра класса #1
Собственно ошибка в мейне error C2227: left of '->AddLast' must point to class/struct/union/generic type

Содержимое StringList.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
#include <string>
struct ListItem
{
        std::string item;
        ListItem *next;
    };  
class StringList
{
    private:
        ListItem *first;
        ListItem *last;
    public:
    StringList();   
    ~StringList();
    void RemoveItem(std::string i);
    void RemoveAfter(std::string i);
    void AddLast(std::string i);
};
Содержимое
StringList.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "StringList.h"
StringList::StringList()
{
    first=last=NULL;
}
StringList::~StringList()
{
    ListItem *current=NULL;
    ListItem *next=first;
    while (next)
    {
        current=next;
        next=next->next;
        delete current;
    }
}
 
void StringList::RemoveItem(std::string i)
{
    ListItem *prev=NULL;
    ListItem *current=first;
    while (current) 
    {
        if ((*current).item==i)
        {
            if (prev) 
            {
                prev->next=current->next;
            }
            if (current==last)
            {last=prev;}
            delete current;
        }
        else
        {
            prev=current;
            current=current->next;
        }
    }
}
void StringList::RemoveAfter(std::string i)
{
    ListItem *prev = NULL;
    ListItem *good = first;
    while (good !=NULL && good->item !=i)
    {
        prev=good;
        good=good->next;
    }
    ListItem *current=NULL;
    ListItem *next=good;
    while (next)
    {
        current=next;
        next=next->next;
        delete current;
    }
}
void StringList::AddLast(std::string i)
{
    ListItem *newItem = new ListItem();
    (*newItem).item=i;
    if (last == NULL)
    {
        first=newItem;
    }
    else
    {
        last->next = newItem;
    }
    last=newItem;
}
Содержимое main.cpp:
C++
1
2
3
4
5
6
7
8
#include <stdio.h>
#include "StringList.h"
void main()
{
StringList mylist();
ListItem x;
mylist->AddLast("abcde");
}
Что же все-таки не так? На различные принципиальные моменты внимание прошу не обращать, а только на собственно ошибку
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
21.04.2011, 23:52     Ошибка создания экземпляра класса #2
Для использования оператора стрелка переменная mylist должна быть указателем.
login
2 / 1 / 0
Регистрация: 16.04.2009
Сообщений: 90
21.04.2011, 23:54  [ТС]     Ошибка создания экземпляра класса #3
Дело в том, что
mylist.AddLast("abcde")
тоже не работает
error C2228: left of '.AddLast' must have class/struct/union
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
22.04.2011, 00:03     Ошибка создания экземпляра класса #4
а попробуй вот так
C++
1
StringList mylist;
login
2 / 1 / 0
Регистрация: 16.04.2009
Сообщений: 90
22.04.2011, 00:07  [ТС]     Ошибка создания экземпляра класса #5
Да ладно! Спасибо большое, второй день парюсь, а такая ерунда оказывается.
Yandex
Объявления
22.04.2011, 00:07     Ошибка создания экземпляра класса
Ответ Создать тему
Опции темы

Текущее время: 13:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru