Перейти к содержанию

С/С++ Вопросы и ответы ()


Рекомендуемые сообщения

Решил забить на форматированный вывод)

Новая беда - ошибки внутри fstream.h/fstream, iostream.h/iostream и istream/istream.h. В общем более 50 штук.

Untitled_9f21553333c652629e5ff2ab71bac4d4.png

Мб ставить виртуальную машину с XP и писать на Builder, где все работало. Написал код на парах, а дома ничего не работает(


зы и еще: нужен аналог кода для embarcadero
#include 
#include
#include
#include
#include
#include
#pragma hdrstop
#include "Unit1.h"
using namespace std;
....
for (string line; getline(f1, line) { //работа с файлом построчно
....
}

В билдере работает нормально, тут же не понимает слова string, функцию getline(), и вообще как будто цикл неправильно написан (expression syntax)

Ссылка на комментарий

Я не в консоли пишу) Раньше никогда ошибки внутри юнитов не вылетали, а сейчас прям через строчку лезут...

зы через полчасика скачается vmware... фтопку этот embarcadero и кодинг на win7

Ссылка на комментарий

Justice

У меня всё нормуль, fstream - он для консоли - это раз, а то что он работает в windows - это ладно, но скрещивать 2010 builder со старыми функциями - тот еще геморрой. Все переходят на юникод. :)

Ссылка на комментарий

Я еле-еле разобрался как работать с файлами в c++ используя fstream и перегуглив все по каждой проблеме, а тут надо что-то заново осваивать - ну уж нет, извольте) Для моих потребностей и fstream хватит.

Ссылка на комментарий

ну, как минимум #include , да и что за getline(f1,line)?

может, таки, f1.getline(...)?

http://www.cplusplus.com/reference/iostream/istream/getline/

fstream - он для консоли - это раз, а то что он работает в windows - это ладно

О_о, может, все-таки, fstream - он для файлов?

Ссылка на комментарий
ну, как минимум #include ,

Untitled_3c7e97d726e8821983f75d6dd621a9b6.png

да и что за getline(f1,line)?

может, таки, f1.getline(...)?

line берется из файла f1 (вся линия, цикл идет до eof)... в билдере все работало. f1.getline проверить немогу - fstream не работает)
Ссылка на комментарий

Слушайте люди подскажите, сейчас сессия каникулы, нового пока ничего учить не будем, мне вот интересно что мне дальше изучать в Си\С++ )) В общем мы изучили:

Структуры, Функции, указатели, функции динамического распределения памяти, списки, битовые поля, обьеденения, перечисления, файлы, стандартные потоки. Может кто даст списочек того что можно изучить, буду очень признателен )))

Ссылка на комментарий

Да уж лучше почитать что-нибудь, что не привязано к языку, типо "мифический человеко-месяц", "искусство программирования" и т.п.

Если, уж очень хочется лучше узнать С++, то "exceptional C++" и "efficient C++"

PS: имхо...

Ссылка на комментарий

Хотелось бы почитать литературу где было бы все ясно и понятно, на примерах, для начинающих в С++. В любом случае мы будем изучать С++ на след курсе, но за лето хотелось бы узнать что нибудь самому, ради интереса, никаких сложных терминологий и т.д.. чтобы все просто и ясно.

Ссылка на комментарий

Cristian вроде на повтасе на втором курсе сейчас преподают java

Добавлено спустя 1 минуту 41 секунду:

после первого курса надо завязывать с литературой для начинающих и переходить на что нибудь по серьёзнее.

Ссылка на комментарий

Cristian

Кнута читай *40. шучу=) надо чё попроще но по возможности без привязки к определенному языку.

Добавлено спустя 8 минут 43 секунды:

«Искусство программирования», Дональд Э. Кнут

«Объектно-ориентированный анализ и проектирование», Гради Буч

«Совершенный код», Стив Макконел

«Мифический человеко-месяц», Хилл Чапел, Фредерик Брукс

«Приемы объктно-ориентированного проектирования. Паттерны проектирования», Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссилес

чесно спёрто отсюда статейку на сайте тоже прочитай, полезно будет

Ссылка на комментарий

Ладно начал пока изучать классы в С++ и некоторые особенности этого языка... посмотрим ))))

PS: В VS2009 есть Windows forms aplication, там типа интерфейс для проги можно создавать, может посоветует кто книжку или сайтик где можно научится там работать ? Или рано ?

Ссылка на комментарий

Cristian

сначала в консоли научись работать - там проще, и отвлекаться на рисование интерфейса не надо. А потом уж код переложить на интерфейс не составит труда.

Ссылка на комментарий

объясните норм языком как реализовать полиморфизм на с++

так чтобы понятно было)

указатель на базовый класс имеется

base *p[] = new base[4];
p[0] = new kvadrat();
p[1] = new palka();
p[2] = new polukrest();
p[3] = new zigzag1();
p[4] = new zigzag2();

Естественно ниче не работает

[bCC32 Error] Unit1.cpp(136): E2034 Cannot convert 'base *' to 'base *[]'

Full parser context - Unit1.cpp(135): parsing: void base::Spawn()


public:
void Gameover(void);
void GenNext(void);
void Spawn(void);
};

class kvadrat : public base {
public:
void Paint(int x, int y, const char z);
void Fall(void);
void goLeft(void);
void goRight(void);
void goDown(void);
void checkline(int y, int h);
int coorx,coory;
private:
int i;
};
class palka : public kvadrat {
public:
void Paint(int x, int y, const char z, bool zanul);
void Fall(void);
void goLeft(void);
void goRight(void);
void goDown(void);
void changeState(int x,int y);
int coorx,coory;
int state;
};
class polukrest : public kvadrat {
public:
void Paint(int x, int y, const char z, bool zanul);
void Fall(void);
void goLeft(void);
void goRight(void);
void goDown(void);
void changeState(int x,int y);
int coorx,coory;
int state;
}; // *
class zigzag1 : public kvadrat { // +* *+
public: //** *
void Paint(int x, int y, const char z, bool zanul);
void Fall(void);
void goLeft(void);
void goRight(void);
void goDown(void);
void changeState(int x,int y);
int coorx,coory;
int state;
}; // *
class zigzag2 : public kvadrat { // +* *+
public: // ** *
void Paint(int x, int y, const char z, bool zanul);
void Fall(void);
void goLeft(void);
void goRight(void);
void goDown(void);
void changeState(int x,int y);
int coorx,coory;
int state;
};
class base {

если все будет работать, я к примеру могу написать

p[4].goLeft();

и вызовется соответствующая процедура класса zigzag2?

Ссылка на комментарий

base *p[4];

p[0] = new kvadrat();

p[1] = new palka();

p[2] = new polukrest();

p[3] = new zigzag1();

p[4] = new zigzag2();

вызов

p[4]->goLeft();

Добавлено спустя 1 минуту 40 секунд:

+

class base {

public:

void Gameover(void);

void GenNext(void);

void Spawn(void);

virtual void goLeft()=0;

};

Ссылка на комментарий

спасибо конечно, но обязательно ли в base пихать все процедуры, которые находятся в наследованных от него процедурах?

зы как обратиться к функции базового класса? если объявить его в виде

int i;
...
base asd;

[bCC32 Error] Unit1.cpp(94): E2352 Cannot create instance of abstract class 'base'

[bCC32 Error] Unit1.cpp(94): E2353 Class 'base' is abstract because of 'base::Paint(int,int,const char) = 0'


public:
void Gameover(void);
void GenNext(void);
void Spawn(void);
virtual void Paint(int x, int y, const char z)=0;
virtual void Fall(void)=0;
virtual void goLeft(void)=0;
virtual void goRight(void)=0;
virtual void goDown(void)=0;
virtual void checkline(int y, int h)=0;
};
class base {

На base::тут_имя_функции(); ругается... Аналогично и с base.тут_имя_функции(); и base->тут_имя_функции();

Ссылка на комментарий

если хочешь полиморфный вызов то да, обязательно. Если функцию в классе объявил как virtual то её оттуда не вызовеш.

Добавлено спустя 637 минуту 637 секунд:

и в base нужно заносить только те процедуры которые хочеьш полиморфно вызывать

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...