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

Неразрешенный внешний символ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
Edison4
6 / 6 / 0
Регистрация: 23.02.2012
Сообщений: 169
26.10.2012, 23:08     Неразрешенный внешний символ #1
Здравствуйте!Возникла проблема с классами
Вот вообщем мой класс :
WorldEdit.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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include "WorldEdit.h"
#include "Mouse.h"
#include <iostream>
#include <HGE\hgesprite.h>
extern HGE *hge;
Mouse *mouse;
 
const int WidthLevel = 32;
const int HeightLevel = 32;
 
 
void WorldEdit::CreateWorld()
{
    
    int blocks[WidthLevel][HeightLevel] =
   {{2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,3,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,3,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2},
    {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}};
 
    CountBlocks = 0;
    float X=0,Y=0;
    for(int i=0;i<WidthLevel;i++)
    {
        for (int j=0;j<HeightLevel;j++)
        {
            if (blocks[i][j]==1)
            {
                Tile tile(X,Y);
                tile.Type = 1;
                tile.Load("textures\\block_2.png");
                Tiles.push_back(tile);
            }
            if (blocks[i][j]==3)
            {
                Tile tile(X,Y);
                tile.Type = 3;
                tile.Load("textures\\block_1.png");
                Tiles.push_back(tile);
            }
            if (blocks[i][j]==2)
            {
                Tile tile(X,Y);
                tile.Type = 2;
                tile.Load("textures\\block_3.png");
                Tiles.push_back(tile);
            }
            X+=35;
            CountBlocks++;
        }
        X=0;
        Y+=35;
    }
    std::cout<<CountBlocks<<std::endl;
}
void WorldEdit::SetBlock()
{
 
}
bool WorldEdit::CollideBlock(hgeRect *rectangle)
{
    for(int i =0;i<Tiles.size();i++)
    {
        if (Tiles[i].sprite->rectangle.Intersect(rectangle))
        {
            return true;
        }
    }
    return false;
}
void WorldEdit::Draw()
{   
    for (int i=0;i<Tiles.size();i++)
    {
        Tiles[i].Draw();
    }
    /*
    for (std::list<Tile>::iterator i = Tiles.begin();i!=Tiles.end();i++)
    {
    i->Draw();
    }*/
}
WorldEdit.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <list>
#include <vector>
#include "Tile.h"
class WorldEdit
{
public:
    
    /*
    //WorldEdit() {};
    //~WorldEdit() {};*/
    static void CreateWorld();
    static std::vector<Tile> Tiles;
    static int CountBlocks;
    static void SetBlock();
    static bool CollideBlock(hgeRect *rectangle);
    static void Draw();
};
Появляться стала ошибка как только я добавил статик почему не понимаю смотрел в книжках вроде так .Вот сам текст ошибки :
Ошибка 2 error LNK2001: неразрешенный внешний символ ""public: static int WorldEdit::CountBlocks" (?CountBlocks@WorldEdit@@2HA)" C:\Users\Edison4\documents\visual studio 2010\Projects\HGETutor\HGETutor\WorldEdit.obj HGETutor
Ошибка 1 error LNK2001: неразрешенный внешний символ ""public: static class std::vector<class Tile,class std::allocator<class Tile> > WorldEdit::Tiles" (?Tiles@WorldEdit@@2V?$vector@VTile@@V?$allocator@VTile@@@std@@@std@@A)" C:\Users\Edison4\documents\visual studio 2010\Projects\HGETutor\HGETutor\WorldEdit.obj HGETutor
Ошибка 3 error LNK1120: 2 неразрешенных внешних элементов C:\Users\Edison4\documents\visual studio 2010\Projects\HGETutor\Debug\HGETutor.exe 1 1 HGETutor
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2012, 23:08     Неразрешенный внешний символ
Посмотрите здесь:

C++ Неразрешенный внешний символ
C++ Неразрешенный внешний символ
Неразрешенный внешний символ C++
неразрешенный внешний символ C++
Неразрешенный внешний символ C++
Ссылка на неразрешенный внешний символ C++
Неразрешенный внешний символ C++
Неразрешенный внешний символ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
26.10.2012, 23:17     Неразрешенный внешний символ #2
статические члены должны быть дополнительно объявлены по аналогии с глобальными переменными, если не ошибаюсь.
и вообще. Зачем тут всё статическое??? Это типа попытка синглетон сделать?

C++
1
2
3
4
5
6
7
//WorldEdit.h
class WorldEdit{
public:
static int CountBlocks;
void CreateWorld();
//...
};
C++
1
2
3
4
5
6
//WorldEdit.cpp
int WorldEdit::CountBlocks=0;//ДОБАВИТЬ В СРР ФАЙЛ!!!
void WorldEdit::CreateWorld(){
//*****
}
//...
Yandex
Объявления
26.10.2012, 23:17     Неразрешенный внешний символ
Ответ Создать тему
Опции темы

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