#2 KIIV
Aj, dik moc :)
Příspěvky odeslané z IP adresy 85.92.56.–
Ahoj,
chci zmenit vetev pomoci git checkout nameofbranch. Zmenit vetev se povede, ale vypise mi to
M attempts/rvalueref_class.cpp
M math/Matrix.hpp
M math/OWVector.hpp
M math/test/Matrix_test.cpp
M math/typedefmatrix.hpp
Nevite nahodou nekdo, co znamena to M?
Dekuji moc za odpovedi.
Koudis
Ahojte lidi :D
pouzivam g++ verze 4.6.3
Zkoumal jsem, jak se chova rvaluref v pretizenych operatorech. Napsal jsem si proto takovoutu zkusebni tridu http://db.tt/L90NqYOy
Kdyz program skompiluji a spustim(vyraz t_1 = t_2 + t_1 + t_2 * t_3):
operator*
operator+(const attempt&)
operator+(attempt&&)
operator= ref
nemelo by se misto operator+(const attempt&) volat take operator+(attempt&&)? (operator+(attempt&&) se vola po vyhodnoceni t_2 * t_3).
Kdyz zadam vyraz typu t_1 = t_2 + t_1 + t_2 + t_3 volaji se vsude operator+(const attempt&). Coz je velice zvlastni jelikoz bych ocekaval, ze se bude volat jeden operator+(const attempt&) a dva operator+(attempt&&).
Proc se takto g++ chova?
#3 Ondra
Ukazatel na shared_ptr? Proč ukazatel? To nějak popírá smysl toho shared_ptr.
nepopira.
template <typename T = float>
class shared_ptr_help
{
public:
~shared_ptr_help() { delete shared_ptr_pointer; }
shared_ptr_help(shared_ptr<T>* pointer):
shared_ptr_pointer(pointer) {}
operator T*() { return shared_ptr_pointer->get(); }
private:
shared_ptr<T>* shared_ptr_pointer;
};
pak na danem miste vytvorim pomoci new nejakou instanci shared_ptr, vlozim ji do shared_ptr_help a dal se o pointer nestaram (shared_ptr_help vytvorim v "lokalnim" zasobniku).
Tato trida ma jako jedinne za ukol implementaci operatoru pretypovani. MOhli bychom pridat i metodu Getshared_ptr_pointer() const...
Ahoj,
pouzivam linux (konkretne Kubuntu). Mam napsano par programku v C++. do budoucna bych ale chtel, aby tyto programky byly plne prenositelne.
Vim, ze pro g++ existuje prepinac -std=norma. Je tento prepinac zarukou, ze g++ pojede podle normu a nebude "do kodu cpat" najake GNU vylepseni popripade povolovat to, co norma nepovoli?
Koudis
ahoj lidi :D
na internetu jsem nasel celkem peknou skupinku trid na obsluhu erroru. Zaujala me tam jedna vec - lze identifikovat zda funkce (ktera vyvolala error) je private, protected nebo public. Chtel bych znat vas nazor, jestli je to k necemu dobre, popripade jestli vas nenapada nejaka prakticka aplikace...
Koudis
Ahoj,
nasel jsem na internetu tento kousek kodu
void Vektor::operator delete (void *v)
{
::delete v;
}
co znamenaji ty :: pred delete? Kdysi davno jsem to nasel v dokumentaci od IBM ale ted to ne a ne najit.
Dekuji moc za rady...
Koudis
#6 ondra.holub
prepisovat konstruktory asi moc pekna vec nebude. Lepsi bude, hodit do tridy jako clenskou promennou ukazetal na shared_ptr...
Me spise zajimalo, jestli nejaka takove trida neexistuje primo v STL. Abych ji nemusel zbytecne psat...
Koudis
#8 ingiraxo
Ahoj,
mam v tom nejaky binec. Napisu program v kterem mam napr. "new int[4]". Danou pamet neuvolim pomoci "delete[]". Program sam tuto pamet uvolni pro dalsi vyuzivani? Pokud ano proc mi valgrind rve, ze jsem nechal v pameti nejake neuvolnene misto?
ahojky,
tak prvni dotaz na nove forum
shared_ptr<T> nema pretizeny operator pretypovani T*. Nejak jsem si uvedomil, ze ho potrebuji . Existuje v standardu nejaka podobna trida, ktera implementuje i "operator T*()?"
Dekuji moc vsem za odpovedi.
Koudis
Ahoj lidi,
nasel jsem nove forum http://forum.aspnetmvc.cz/
kouknete na nej :)
Mela by to byt nahrada za velice zajimave nve forum na builder.cz
Koudis
Ahoj,
mohl by mi prosim nekdo vysvetlit, co to jsou "atomic operations" hledal jsem hledal ale nenachazel :(
(staci mi jenom link, klidne v anglictine).
Dekuji
Koudis
Ahoj,
neznate nekdo free programek pro vypalovani light scribe ?
To proc definuji dva typy je ciste a jeno moje vec - nasobim matice cislem ktere ne vzdy je s plov des carkou, tak jsem pro nej vytvoril novy typ a tedkom muzu bez nejakeho hnusneho pretypovani napsat ...
int b = 2;
Matrix<float, int> pokus(2,2);
pokus.LoadIdentityMatrix();
pokus = b * pokus;
pokus *= b (tento operator jeste nemam dekl.)
#4 Matrix17
ale existuji ... zajimave je, ze mi to funguje naprosto v pohode a bez warning ... (ty <> jsou, aspon podle g++, jakesy priznaky - kdyztak me opravte - aby kompilator vedel, ze friend funkce patri presne k danemu template)
Ty dva nove radky jsou z pripravovane normy - prvni je move constructor a druhy je zakazany podle nove pripravovane normy ....
#2 vitamin
to jsem taky zkousel .. bohuzel nefungovalo ...
ale uz jsem na to prisel ....
#ifndef OPENGL_MATHGEOMETRY_MATRIX
#define OPENGL_MATHGEOMETRY_MATRIX
#include <iostream>
using namespace std;
namespace MathGeometry
{
typedef unsigned short int ushorti;
template <typename T = float, typename K = T>
class Matrix;
template <typename T, typename K>
class VirtualMatrix;
template <typename T, typename K>
ostream& operator<<(ostream&, const Matrix<T,K>&);
template <typename T, typename K>
Matrix<T,K> operator*(const K& left, const Matrix<T,K>& right);
template <typename T, typename K>
T cukni()
{
cout << "cukl\n";
return 2;
}
template <typename T, typename K>
class Matrix
{
public:
virtual ~Matrix();
Matrix(const Matrix<T,K>& copy);
Matrix(Matrix<T,K>&& move);
Matrix() = delete;
Matrix(const Matrix<T,K>* const copy);
Matrix(unsigned short int m, unsigned short int n);
Matrix(unsigned short int m, unsigned short int n, const T* const matrix);
Matrix(unsigned short int m, unsigned short int n, const T** matrix);
T& GetMatrixNumber(unsigned short int _m, unsigned short int _n);
unsigned short int Getn() const { return n; }
unsigned short int Getm() const { return m; }
void kxM(K value);
void kdM(K value); // d - dividing
void mxM(const T* const matrix);
void Mxm(const T* const matrix);
void MT();
void LoadIdentityMatrix();
void LoadZeroMatrix();
void LoadMatrix(const T* const matrix);
friend ostream& (operator<<<>)(ostream& left, const Matrix<T,K>& right);
friend Matrix<T,K> (operator*<>)(const K& left, const Matrix<T,K> &right);
inline T* operator[](unsigned short int _m);
inline const T* operator[](unsigned short int _m) const;
Matrix<T,K>& operator=(const Matrix<T,K>& right);
Matrix<T,K>& operator=(Matrix<T,K>&& right);
Matrix<T,K>& operator=(const VirtualMatrix<T,K>& right);
Matrix<T,K>& operator=(VirtualMatrix<T,K>&& right);
Matrix<T,K> operator+(const Matrix<T,K>& right);
Matrix<T,K> operator*(const K& right);
operator const T*() const;
protected:
void FillMatrix(T value);
T* rGetLines() const { return Lines; }
bool GetChange() const { return Change; }
void ResetChange() { Change = false; }
private:
T* Lines;
unsigned short int m;
unsigned short int n;
bool Change;
};
} // end namespace MathGeometry
#include "ThrowError/Throw_Matrix.hpp"
#include "source/Matrix.cpp"
#endif
// END OF FILE
toto j cely hpp soubor. jsou deklarovane dva operatory pro 2* matrix a matrix * 2, kdyz deklaraci
Matrix<T,K> operator*(const K& right);
hodite pred friend deklaraci
friend Matrix<T,K> (operator*<>)(const K& left, const Matrix<T,K> &right);
tak to zacne hazet chybu "error: expected ‘)’ before ‘<’ token" na radku kde je friend ... ma nekdo nejake vysvetleni ?
ahoj mam mensi problem
template <typename T, typename K>
class Matrix;
template <typename T, typename K>
Matrix<T,K>& operator*(const K left, Matrix<T,K>& right)
template <typename T, typename K>
class Matrix
{
public:
friend Matrix<T,K>& operator*(const K left, Matrix<T,K>& right)
};
template <typename T, typename K>
Matrix<T,K>& operator*(const K left, Matrix<T,K>& rigt)
{
...;
return right;
}
napise mi to pri prekladani (debian 6.01, amd64, gcc ver. 4.4.5)
"g++ -Wall -std=c++0x Matrix.cpp"
In file included from ../XMatrix.hpp:7,
from XMatrix_test.cpp:1:
../../MathGeometry/Matrix/Matrix.hpp:70: warning: friend declaration ‘MathGeometry::Matrix<T, K>& MathGeometry::operator*(K, MathGeometry::Matrix<T, K>&)’ declares a non-template function
../../MathGeometry/Matrix/Matrix.hpp:70: note: (if this is not what you intended, make sure the function template has already been declared and add <> after the function name here)
../../MathGeometry/Matrix/Matrix.hpp:71: warning: friend declaration ‘MathGeometry::Matrix<T, K>& MathGeometry::operator+(K, MathGeometry::Matrix<T, K>&)’ declares a non-template function
kdyz to upravim na
template <typename T, typename K>
class Matrix;
template <typename T, typename K>
Matrix<T,K>& operator*(const K left, Matrix<T,K>& right)
template <typename T, typename K>
class Matrix
{
public:
friend Matrix<T,K>& (operator*<>)(const K left, Matrix<T,K>& right)
};
template <typename T, typename K>
Matrix<T,K>& operator*(const K left, Matrix<T,K>& rigt)
{
...;
return right;
}
tak to pro zmenu napise
hGeometry/Matrix/Matrix.hpp:70: error: expected ‘)’ before ‘<’ token
../../MathGeometry/Matrix/Matrix.hpp:70: error: expected ‘;’ before ‘<’ token
../../MathGeometry/Matrix/Matrix.hpp:71: error: expected ‘)’ before ‘<’ token
../../MathGeometry/Matrix/Matrix.hpp:71: error: expected ‘;’ before ‘<’ token
Nevite nahodou nekdo co stim ?? Jsem z toho celi nestastny ...
to ze se ti vetrak skaluje jeste neznamena, ze musi mit nutne PWM ...:D ...
#3 Pavel
zkus sensors-detect pod seper usr, pokud to nebudes mit nainstalovane, nainstaluj balicek lm-sensors ... "sensors-detect" ti najde chip pro ovladani otacek ventilatoru, pak ho staci zaves pomoci "modprobe ovladac". pak spust pwmconfig - to ti nejde vsechny vetracky v PC ktere maji podporu PWM, doporucuji i detailni konfiguraci, kterou ti to automaticky nabidne (je dobre poslaouchat jestli vetracek nahadou uplne nevypl, pokud ano, je detail configure nutna). ke konci ti nabidne generovani souboru pro fancontrol, je dobre se podivat, jestli to opravdu ridi to co chces (aby to nahodou nekotrolovalo teplotu graf karty). po vygener. conf souboru spust fancontrol a melo by to fungovat ...
Pokud ne, tak sem aspon hod, co ti to vypise ... :) ...
Ahoj,
nainstaloval jsem bricscadv11 a zacalo mi to hazet tuto chybku "(bricscad:13751): Gtk-CRITICAL **: gtk_window_resize: assertion `width > 0' failed, Segmentation fault"
Nevite nekdo co s tim ? Pouzivam Debian 6.01 amd64. Na internetu jsem nasel, log na bugzilla z roku 2008 - bug pod fedorou.
Prosim poradte, diky moc :) ...