19.04.2015 / 21:40 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Сплошная непонятность а не язык Если раскоментировать //cell.summa.size(); то при вызове оператора << просто ничего не происходит Открыть спойлер Закрыть спойлер class Cell {
private:
vector<string> summa;
public:
Cell() {
}
void set(char ch) {
summa.push_back(string(&ch));
}
friend ostream &operator << (ostream &output, Cell &cell) {
output << "test"; // не выведется если раскоментировать строку ниже
//cell.summa.size();
}
};
// Вывожу массив из Cell так
template<typename T> void printMatrix(T** m, int size, string prompt) {
cout << prompt << endl;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
cout << m[i][j] << "\t";
}
cout << endl;
}
}
Т.е. любое обращение к переменным обьекта и оператор перестает работать Изменено Naik (19.04 / 21:45) (всего 1 раз) |
19.04.2015 / 22:31 | |
Banschey Пользователь Сейчас: Offline
Имя: Banschey Откуда: Донецк, Украина Регистрация: 22.03.2015
| Naik, Попробуй так #include <fstream>
ifstream file;
file.open("path")
// а так работает // это скорей всего конструктор по у молчанию ты вызвал
ifstream file("path");
если я не ошибаюсь то расширение у файла должно быть, или нет ? |
19.04.2015 / 22:39 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| Naik, на твой пост ( #412577) отвечу, ты думаешь на Java. Но C++ другой. String s = new String("Oka");
System.out.println(s.empty());
Ты можешь думать на Java, если будешь использовать указатели: // using std::string;
string * s = new string("Ksa"); // new возвращает адрес объекта в памяти
cout << s->empty(); // или size()
То, что ты хочешь написать, это объекты на стеке: string s("friends"); // конструктор
s.empty();
|
20.04.2015 / 23:00 | |
Banschey Пользователь Сейчас: Offline
Имя: Banschey Откуда: Донецк, Украина Регистрация: 22.03.2015
| void collision(vector<Object> &object);///Это метод класса.Object это структура.
vector<Object> obcet;//Это инициализация в мейне.
Нужно передать силку на него в класс и там с ним уже работать, но выдает ошибку: Ошибка 17 error C2061: синтаксическая ошибка: идентификатор "vector" . Без <vector> пишет туже ошибку но толкo уже про Object; В чем может быть проблема ? |
20.04.2015 / 23:38 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| Banschey, #include <vector> и using std::vector есть?
|
21.04.2015 / 01:18 | |
Banschey Пользователь Сейчас: Offline
Имя: Banschey Откуда: Донецк, Украина Регистрация: 22.03.2015
| Ксакеп, да Структура Object Реализована в отдельном Заголовек .h struct Object
{
int GetPropertyInt(std::string name);
float GetPropertyFloat(std::string name);
std::string GetPropertyString(std::string name);
std::string name;
std::string type;
sf::Rect<float> rect;
std::map<std::string, std::string> properties;
sf::Sprite sprite;
};
Изменено Banschey (21.04 / 01:29) (всего 1 раз) |
21.04.2015 / 01:42 | |
Banschey Пользователь Сейчас: Offline
Имя: Banschey Откуда: Донецк, Украина Регистрация: 22.03.2015
| Исходник не мой но суть всего в том что : Есть тайл карты tmx, с помощью TyniXml он парситсья и рисуется карта. <vector>Object забирает все объекты с карты не картинки. Потом в цикле пробегаюсь по нему и сравниваю внутри цикла мой объект и обьект который лежит в <vector>Object и смотрю (Player.getRect().intersects(obj[i].rect) если они пересеклись выполнить те или иные действия. Это работает в мейне, но объектов для сравнения может быть 20 яж не буду их все в мейне, поэтому хочу вставить его класс моего объекта Полный пример for (int i = 0; i<obj.size(); i++)
if (Player.getRect().intersects(obj[i].rect))
{
if (obj[i].name == "solid")
{
if (dy > 0){ Player.move(0, 0 - speed* frameTime.asSeconds()); }
if (dy < 0){ Player.move(0, 0 + speed* frameTime.asSeconds()); }
if (dx > 0){ Player.move(0 - speed* frameTime.asSeconds(), 0); }
if (dx < 0){ Player.move(0 + speed* frameTime.asSeconds(), 0); }
}
}
Player.getRect()-возвращает позицию по х, по y, длину и ширину obj тот самый <vector>Object Изменено Banschey (21.04 / 01:48) (всего 2 раза) |
21.04.2015 / 07:13 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| Banschey, не, ты что-то не то скинул. Нужна строчка на которой появляется ошибка, и соответственно всё тело метода, или даже весь класс. В C++ трудно угадывать по одной строке поведение компилятора.
|
21.04.2015 / 11:02 | |
Banschey Пользователь Сейчас: Offline
Имя: Banschey Откуда: Донецк, Украина Регистрация: 22.03.2015
| Открыть спойлер Закрыть спойлер Ошибка 73 error LNK1169: обнаружен многократно определенный символ - один или боле
Ошибка 63 error LNK2005: "public: bool __thiscall Level::LoadFromFile(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?LoadFromFile@Level@@QAE_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) уже определен в main.obj
Ошибка 72 error LNK2005: "public: bool __thiscall Level::LoadFromFile(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?LoadFromFile@Level@@QAE_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) уже определен в main.obj ViewS.obj
...................................итд
Подключил хедер внутри своего класса и выдает новую порцию Наверно нужно все пере-собрать. Изменено Banschey (21.04 / 11:03) (всего 1 раз) |
21.04.2015 / 13:06 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| Banschey, лол, ну и зачем? Содержимое того заголовочного файла тупо копируется внутрь класса, естественно у тебя там жесть будет.
|