Я пытаюсь использовать статическую переменную в одном из моих классов. Я использовал их раньше, без проблем. Теперь я получаю эту ошибку:
/tmp/ccg26aZi.o: В функции 'main': main.cpp:(.text+0x7482): неопределенная ссылка на `Rect::rect_change' collect2: error: ld вернул 1 статус выхода make: *** [exe] Ошибка 1
любой совет? Спасибо!
ОБНОВИТЬ:
Мне сказали проверить мой make-файл, чтобы убедиться, что rect.cpp был включен в создание exe. Я поменял папку, чтобы она была в правильном месте. Но теперь я получаю совершенно новый набор ошибок, которых раньше не было:
Я проверил свой make-файл и убедился, что rect.cpp, и переместил его в другую папку, в которой работал *.cpp. Однако теперь я получаю совершенно новый набор ошибок:
include/Rect.h:16:17: ошибка: «SDL_Rect» не указывает тип Rect (const SDL_Rect & r)
include/Rect.h:16:28: ошибка: ISO C++ запрещает объявление ‘r’ без типа [-fpermissive] Rect( const SDL_Rect & r)
include/Rect.h:19:2: ошибка: 'SDL_Rect' не указывает тип
SDL_Rect getSDL_Rect() ^ include/Rect.h: В конструкторе 'Rect::Rect(const int&)': include/Rect .h:17:9: ошибка: запрос члена 'x' в 'r', который имеет неклассовый тип 'const int': x(rx), y(ry), w(rw), h(rh )include/Rect.h:17:17: ошибка: запрос члена 'y' в 'r', который имеет неклассовый тип 'const int': x(rx), y(ry), w(rw), ч (правая)
include/Rect.h:17:25: ошибка: запрос члена 'w' в 'r', который имеет неклассовый тип 'const int': x(rx), y(ry), w(rw), ч (правая)
include/Rect.h:17:33: ошибка: запрос члена 'h' в 'r', который имеет неклассовый тип 'const int': x(rx), y(ry), w(rw), ч (правая)
Вот содержимое моего файла make. rect.cpp находится внутри папки src.
exe: main.cpp
g++ *.cpp src/*.cpp src/*.c `sdl-config --cflags --libs` -lSDL_image -lSDL_mixer -lSDL_ttf -Iincludes
run:
./a.out
r:
./a.out
clean:
rm a.out
c:
rm a.out
// header
#ifndef RECT_H
#define RECT_H
#include <iostream>
class Rect
{
public:
Rect(int x0 = 0, int y0 = 0, int w0 = 0, int h0 = 0)
: x(x0), y(y0), w(w0), h(h0)
{}
Rect( const SDL_Rect & r)
: x(r.x), y(r.y), w(r.w), h(r.h)
{}
SDL_Rect getSDL_Rect()
{
SDL_Rect r = {x, y, w, h};
return r;
}
int x, y, w, h;
static int rect_change;
static int rect_change_max;
};
inline std::ostream & operator<<(std::ostream & cout, const Rect & r)
{
cout << "(" << r.x << "," << r.y << "," << r.w << "," << r.h << ")";
return cout;
}
#endif
rect.cpp
#include "Rect.h"
int Rect::rect_change = 0;
int Rect::rect_change_max = 0;
// main.cpp example
#include "Rect.h"
int main()
{
Rect rect;
rect.rect_change = 5;
return 0;
}
rect.cpp
при создании исполняемого файла. - person R Sahu   schedule 06.05.2015SDL_Rect
. - person celtschk   schedule 06.05.2015SDL_Rect
иRect
. Это специально? - person R Sahu   schedule 06.05.2015