Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

24.12.2009, 20:26
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
Сообщение от razb
что значит не прокатывало? яснее опиши проблему, а лучше выложи код.
Делаю так:
класс какого то объекта на форме:
PHP код:
#ifndef OBJECT_H
#define OBJECT_H
#include <QGraphicsScene>
class Object : public QGraphicsScene
{
Q_OBJECT
public:
Object(QObject *parent = 0);
int posit;
int * mas[3][3];
protected:
virtual void mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent);
};
#endif // OBJECT_H
Класс в котором проходят некие вычисления:
PHP код:
#ifndef XO_II_H
#define XO_II_H
struct crd
{
int x;
int y;
};
class xo_ii
{
public:
int * mas[3][3];
xo_ii();
crd * CrdOpr(int poss);
private:
int SummStr(int nStr);
int SummDl1();
int SummDl2();
crd * OprNullStr(int nStr);
crd * OprNullDl1();
crd * OprNullDl2();
};
Класс самой формы:
PHP код:
#ifndef WIDGET_H
#define WIDGET_H
#include <QMainWindow>
#include "ui_mainwindow.h"
class Object;
class xo_ii;
class MainForm : public QMainWindow, public Ui::XO
{
Q_OBJECT
public:
MainForm();
private:
Object * sc;
xo_ii * xoii;
};
#endif // WIDGET_H
PHP код:
#include "widget.h"
#include "object.h"
#include "xo_ii.h"
MainForm::MainForm()
{
setupUi(this);
xoii = new xo_ii;
sc = new Object;
sc->mas = xoii->mas;
sc->posit = 1;
graphicsView->setScene(sc);
}
Данная схема не работает
ошибка с троке
sc->mas = xoii->mas;
/home/kubik/XO/xo_test/XO/widget.cpp:11: error: invalid array assignment
|
|
|

24.12.2009, 22:19
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
sc->mas = xoii->mas;
/home/kubik/XO/xo_test/XO/widget.cpp:11: error: invalid array assignment
ты хоть читаешь что компилятор пишет?
Код:
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
sc->mas[i][j] = xoii->mas[i][j];
}
}
Вообще лучше делать данные поля закрытыми и обращатся к ним через геттеры/сеттеры.
|
|
|

24.12.2009, 22:28
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
Сообщение от razb
ты хоть читаешь что компилятор пишет?
Код:
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
sc->mas[i][j] = xoii->mas[i][j];
}
}
Вообще лучше делать данные поля закрытыми и обращатся к ним через геттеры/сеттеры.
При использовния данной конструкции я тупо копирую массив 1 в другой. А мне как бы надо что бы была одна ссылка на область памяти(массив) и я ее мог изменять во всех классах и так же при изменение в одном классе изменения отражались во всех
|
|
|

24.12.2009, 23:46
|
|
Познающий
Регистрация: 26.07.2005
Сообщений: 54
Провел на форуме: 47901
Репутация:
46
|
|
Сообщение от Admin Derek
объясните что я не так сделал, изучаю сокеты, по книге "Эффективное программирование TCP/IP", но не как не пойму в чём ошибка. процесс останавливаеться на error socket..
WSAStartup, WSACleanup
Сравни свой код с одним из примеров из msdn
Код:
#include <winsock2.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib, "wininet.lib")
int main(void) {
//----------------------
// Initialize Winsock.
WSADATA wsaData;
int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != NO_ERROR) {
printf("Error at WSAStartup()\n");
return 1;
}
//----------------------
// Create a SOCKET for listening for
// incoming connection requests.
SOCKET ListenSocket;
ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ListenSocket == INVALID_SOCKET) {
printf("Error at socket(): %ld\n", WSAGetLastError());
WSACleanup();
return 1;
}
//----------------------
// The sockaddr_in structure specifies the address family,
// IP address, and port for the socket that is being bound.
sockaddr_in service;
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr("127.0.0.1");
service.sin_port = htons(27015);
if (bind( ListenSocket,
(SOCKADDR*) &service,
sizeof(service)) == SOCKET_ERROR) {
printf("bind() failed.\n");
closesocket(ListenSocket);
WSACleanup();
return 1;
}
//----------------------
// Listen for incoming connection requests.
// on the created socket
if (listen( ListenSocket, 1 ) == SOCKET_ERROR) {
printf("Error listening on socket.\n");
closesocket(ListenSocket);
WSACleanup();
return 1;
}
//----------------------
// Create a SOCKET for accepting incoming requests.
SOCKET AcceptSocket;
printf("Waiting for client to connect...\n");
//----------------------
// Accept the connection.
AcceptSocket = accept( ListenSocket, NULL, NULL );
if (AcceptSocket == INVALID_SOCKET) {
printf("accept failed: %d\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
return 1;
} else
printf("Client connected.\n");
// No longer need server socket
closesocket(ListenSocket);
WSACleanup();
return 0;
}
|
|
|

25.12.2009, 14:24
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
скажите пожалуйста, как грамотно содержимое файла занести в массив строк типа string? размер файл заранее неизвестен.
на данный момент я могу прочитать все в одну строку.
как бы сделать универсальную функцию, которая возвращает массив со строками, чтобы этот массив можно было объявлять без указания размера?
типа
string []rows = loadFile("rows.txt");
|
|
|

26.12.2009, 15:14
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
открываю файл
ifstream fin("file.txt");
копирую его в вектор, типа string
copy(istream_iterator<string>(fin), istream_iterator<string>(), back_inserter(vect));
получаю вектор в котором файл разбит на элементы по ПРОБЕЛАМ
как сделать так, чтобы он разбивал по переводам строк?
|
|
|

26.12.2009, 16:09
|
|
Познающий
Регистрация: 21.06.2008
Сообщений: 57
Провел на форуме: 633209
Репутация:
44
|
|
посоветуйте книгИ по С,
С != С++
|
|
|

26.12.2009, 16:22
|
|
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме: 1027635
Репутация:
234
|
|
|
|
|

26.12.2009, 16:27
|
|
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме: 1027635
Репутация:
234
|
|
Сообщение от Дикс
открываю файл
ifstream fin("file.txt");
копирую его в вектор, типа string
copy(istream_iterator<string>(fin), istream_iterator<string>(), back_inserter(vect));
получаю вектор в котором файл разбит на элементы по ПРОБЕЛАМ
как сделать так, чтобы он разбивал по переводам строк?
PHP код:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main()
{
ifstream fin("input.txt");
vector <string> v;
string tmp;
while (getline(fin, tmp))
{
v.push_back(tmp);
cout << tmp << "\n";
}
cin.get();
return 0;
}
|
|
|

27.12.2009, 00:29
|
|
Познающий
Регистрация: 21.06.2008
Сообщений: 57
Провел на форуме: 633209
Репутация:
44
|
|
есть емаксеры? :\
тут такая проблема,
;; ECB
(add-to-list 'load-path "~/emacs.d/ecb-snap/")
(require 'ecb)
(global-set-key (kbd "\e\el") 'ecb-toggle-ecb-windows)
(global-set-key (kbd "\e\eea") 'ecb-activate)
(global-set-key (kbd "\e\eed") 'ecb-deactivate)
чего тут не так? хочу сделать из емакса ide под С++
// вопрос отпал, скачал с сорцефорце ecb и сменил бинд на другие кнопки,
Последний раз редактировалось ASQX; 27.12.2009 в 01:14..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|