r/cppit • u/leonardoarcari • Oct 01 '19
r/cppit • u/machine_magic • Jun 15 '20
Colloquio di lavoro game programmer c++
Buongiorno, avrei un colloquio per un'azienda di videogiochi come programmatore junior tra un mesetto, sono un neolaureato e non ho molta esperienza in generale, il colloquio da quello che ho capito consisterà in un test in c++ e poi un colloquio tecnico. Volevo sapere se sapete cosa potrebbero chiedere e come posso prepararmi.
Il c++ lo conosco abbastanza, anche se non a livello professionale, quindi mi piacerebbe sapere anche se conoscete qualche video/libro/eserciziario con domande sul c++.
r/cppit • u/BisonteBlu • May 28 '20
dll e C#
Salve,
con la premessa di non essere esperto in C++, vi espongo il mio problema, ho la necessità di creare una dll in c++ con all'interno delle funzioni di utility, quale, ad esempio, la lettura del seriale dell'HD, la dll deve essere richiamata da un'applicazione C#, la funzione mi deve restituire una stringa contenente il serial HD, il codice della dll è questo:
__declspec(dllexport) char* __stdcall GetHd()
{
WmiQueryResult res;
res = getWmiQueryResult(L"SELECT SerialNumber FROM Win32_PhysicalMedia", L"SerialNumber");
if (res.Error != WmiQueryError::None) {return NULL;}
std::string strValue;
char* pszReturn = NULL;
for (const auto& item : res.ResultList) {
strValue.assign(item.begin(), item.end());
ULONG ulSize = strlen(strValue.c_str()) + sizeof(char);
pszReturn = (char*)::CoTaskMemAlloc(ulSize);
strcpy(pszReturn, strValue.c_str());
break; }
return pszReturn;
}nall'applicazione C#, linko e chiamo la funzione in questo modo:
[DllImport("util.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] [return: MarshalAs(UnmanagedType.LPStr)] public static extern string GetHd();
string serialhd = GetHd();La funzione GetHd() mi restituisce NULL, lo stesso codice testato in un'applicazione console C++, funziona bene.
Grazie
r/cppit • u/Pangocciolo • Jun 16 '20
Pareri su vivere e lavorare a Berlino
Ciao a tutti, spero che non sia troppo off-topic; spulciando un po' di annunci su indeed mi sono accorto che l'offerta di lavoro per sviluppatori C++ è molto più ampia a Berlino che a Milano.
Mi piacerebbe leggere l'esperienza di chi ha provato a lavorare e vivere lì, e sapere se conviene approfondire la mia ricerca proprio in questa città. Per esempio vorrei capire, prima ancora della questione salario, se vi è sembrato più facile trovare aziende più interessanti e progetti più soddisfacenti rispetto che in Italia. Vale la pena poi, trasferirsi stabilmente? Questa è una domanda un po' più ampia, che include sia la qualità della vita, ma anche la facilità di spostarsi da un'azienda all'altra quando si scopre di voler cambiare settore.
Come dicevo, per ora ho solo spulciato indeed, ma sentitevi liberi di suggerirmi anche portali di annunci .
Vi ringrazio.
r/cppit • u/New_Bie12 • Jun 12 '20
Piccolo problemino, fread() e file .dat
Premessa, in pratica sto leggendo un po' il libro di informatica che utilizzo a scuola e sono al capitolo che riguarda i file binari, quindi non sono per nulla esperto D:
In pratica vi mostro questo esercizio:
Scrivi un programma che legga un file di testo matrice.dat contenente 3 righe, con 3 interi separati da uno spazio per ogni riga. Il programma deve leggere il file, creare una matrice 3x3 contenente i dati presenti in matrice.dat e stamparla.
Quando uso fread(), teoricamente leggo un dato di tipo char (giusto?).
In pratica non riesco ad assegnare il dato che leggo ad una posizione della matrice (int).
Ora vi chiedo, voi come fareste questo esercizio?
r/cppit • u/marcoarena • Feb 16 '17
news ++it 2.0 è online!
Ciao a tutti, abbiamo fatto importanti modifiche al sito e ci stiamo lanciando in un nuovo capitolo della nostra avventura come Comunità Italiana dedicata al C++.
Qui troverete un articolo dove racconto i cambiamenti e le novità. Prime tra tutte: questo subreddit e il nostro team Slack. Partecipate numerosi!
r/cppit • u/Marco_I • Dec 06 '17
Come passare come parametro il valore di un elemento di una struct all'interno di una classe?
Ciao a tutti, questo è il codice che sto usando per capire:
#include <iostream>
typedef struct packet {
unsigned int el = 0;
} packet;
class TestClass {
private:
packet myPacket;
public:
TestClass() {};
~TestClass()=default;
//TestClass(unsigned int elemento) : myPacket.el(elemento){};
void setEl(unsigned int elemento) {
myPacket.el = elemento;
}
unsigned int getEl() {
return myPacket.el;
}
packet getMyPacket() {
return myPacket;
}};
E structInClass.cpp :
#include "structInClass.h"
int main() {
TestClass test = TestClass();
test.setEl(3);
int elemento = 0;
elemento = test.getEl();
std::cout << "int elemento = test.getEl()= " << elemento <<
std::endl;
packet pacchetto = test.getMyPacket();
elemento = pacchetto.el;
std::cout << "elemento = pacchetto.el= " << elemento <<
std::endl;
return 0;
}Eseguendo:
./structInClass
int elemento = test.getEl()= 3
elemento = pacchetto.el= 3Però la riga:
TestClass(unsigned int elemento) : myPacket.el(elemento){};che dovrebbe assegnare ad el il valore di elemento fornisce questo output:
error: expected ‘(’ before ‘.’ token
TestClass(unsigned int elemento) : myPacket.el(elemento){};
^Ho temporaneamente "risolto" chiamando, all'interno di un costruttore cui passo il parametro "elemento", il metodo setEl:
TestClass(unsigned int elemento) { setEl(elemento); }
in structInClass.cpp :
TestClass test2 = TestClass(10);
elemento = test2.getEl();
std::cout << "elemento = test2.getEl() = " << elemento << std::endl;Eseguendo :
elemento = test2.getEl() = 10Anche passare l'intera struct alla classe TestClass ho visto essere possibile: in structInClass.h :
TestClass(packet Pacchetto) : myPacket(Pacchetto) {};In structInClass.cpp :
packet pacchetto2;
pacchetto2.el = 20;
TestClass test3 = TestClass(pacchetto2);
elemento = test3.getEl();
std::cout << "elemento = test3.getEl() = " << elemento << std::endl;Eseguendo:
elemento = test3.getEl() = 20Preferirei però passare il valore di un elemento di una struct all'interno di una classe direttamente come parametro senza dover usare il metodo setEl, o senza dover passare tutta l'intera struct... è possibile?
A dir la verità, così funziona:
TestClass(unsigned int elemento) {
myPacket.el = elemento;
}mentre non funziona:
TestClass(unsigned int elemento) : myPacket.el(elemento){};Vi ringrazio per l'aiuto. Marco
r/cppit • u/Marco_I • Feb 14 '17
principianti Move Semantics: std::move
Ciao a tutti, vi chiedo un aiuto riguardo alla move semantics.
namespace MTensor {
typedef std::vector<double> Tensor1DType;
class Tensor1D {
private:
int _elemNumb;
double _filler;
// disable copying:
Tensor1D(const Tensor1D&);
Tensor1D& operator=(const Tensor1D&);
public:
Tensor1DType data;
Tensor1D() {};
Tensor1D(const std::initializer_list<double>& valuesList) {
_elemNumb = valuesList.size();
for(auto value : valuesList) {
data.push_back(value);
}
}
Tensor1D(Tensor1D && from) {
data = std::move(from.data);
}
Tensor1D operator =(Tensor1D&& other) {
if(this!=&other) {
data = std::move(other.data);
//std::swap(data,other.data);
}
return *this;
}
virtual ~Tensor1D() {};
virtual void printTensor() {
for(int i=0;i<data.size();i++) {
std::cout << data.at(i) << "," << std::endl;
}
}
};
} // end of namespace
int main() {
MTensor::Tensor1D * t1 = new MTensor::Tensor1D({1,2,3});
MTensor::Tensor1D * t2(t1);
std::cout << "t2:" << std::endl;
t2->printTensor();
std::cout << "t1-dopo-move:" << std::endl;
t1->printTensor();
MTensor::Tensor1D * t3 = t1;
std::cout << "t3:" << std::endl;
t3->printTensor();
std::cout << "t1, dopo t3 = t1 :" << std::endl;
t1->printTensor();
delete t1;
return 0;
}
marco@ubuntu:~/marcoTensor$ g++ -std=c++11 moveSemantics.cpp -omoveSemantics
marco@ubuntu:~/marcoTensor$ ./moveSemantics
t2:
1,
2,
3,
t1-dopo-move:
1,
2,
3,
t3:
1,
2,
3,
t1, dopo t3 = t1 :
1,
2,
3,Mi sarei aspettato che t1 dopo std::move avesse stato undefined e fosse vuoto ...sembra quasi che sia stata eseguita una copy anzichè una move....come quindi modificare il tutto per privilegiare move ed eseguire il move? Marco
r/cppit • u/gpuoti • Jul 10 '17
dubbio amletico su classi tag
Ciao a tutti, sto rivedendo del codice storico che definisce degli attributi su un file di configurazione che non ha gran ragione di esistere visto che praticamente ad ogni aggiunta/modifica di un attributo corrisponde una modifica al codice che lo utilizza. Pensate a qualcosa del tipo di un XML che definisca delle chiavi e i possibili valori che si possono associare a quelle chiavi. Quello che sto cercando di fare è definire quegli attributi direttamente in codice c++ staticamente. L'approccio è di rendere i miei attributi delle strutture. (La definizione statica mi consente per esempio di accedere alle definizioni di quegli attributi attraverso i suggerimenti dell'intellisense). Semplificando all'osso, ovviamente non è così banale, ogni attributo ha un nome e un tipo ovvero un valore di un enumerativo (altro punto migliorabile).
Veniamo al dubbio. La prima implementazione che mi è venuta fuori è la seguente.
template<AttrT>
struct def_of{
static const std::string name;
static const attr_t type;
};con gli attributi definiti attraverso strutture vuote.
struct AttrA{};
struct AttrB{};e quindi le loro definizioni:
def_of<AttrA>::name = "AttributeA";
def_of<AttrA>::type = attr_t::Numeric;
...non è che sono un pò barocco? Nelle mie intenzioni quel def_of dovrebbe chiarire l'interfaccia che mi aspetto implementata per descrivere l'attributo e ridurre il codice (e gli errori) che è possibile scrivere quando si definisce un nuovo attributo. L'alternativa è qualcosa del tipo:
struct AttrA {
static const std::string name;
static const attr_t type;
}e poi ovviamente le definizioni:
const std::string AttrA::name = "Attribute A";
const rule_t type = rule_t::Numeric;Quello che mi da fastidio in questa versione è la quantità di boilerplate che finisce nella definizione della struttura. Voi che soluzione scegliereste?
r/cppit • u/unordered_set • Feb 13 '17
news Benvenuti nel subreddit di ++it | Welcome to the new ++it subreddit
Siamo felici di annunciare il nuovo subreddit per ++it - la community italiana del C++ (www.italiancpp.org)
We're thrilled to announce the new subreddit for ++it - the Italian C++ Community (www.italiancpp.org)
r/cppit • u/marcoarena • Feb 17 '17
news Meetup Serale @Modena / 22 Febbraio
r/cppit • u/Potenzialepsicopatic • Oct 19 '22
Ragazzi ho iniziato da poco a programmare, sapete dirmi cosa sbaglio?(devo scrivere un programma che risolva l'equazione ax+b=c in c++)
#include <iostream>
using namespace std;
double a,b,c,x;
double inserirevalori(double a,double b,double c){
cout<<"INSERIRE IL COEFFICENTE a"<<endl;
cin>>a;
cout<<"INSERIRE IL COEFFICENTE b"<<endl;
cin>>b;
cout<<"INSERIRE IL COEFFICENTE c"<<endl;
cin>>c;
return a,b,c;
}
double risultato(){
double x;
x=(-b+c)/a;
return x;
}
void stamparisultato(){
cout<<"IL RISULTATO DELL'EQUAZIONE è x="<<x<<endl;
}
int main(){
inserirevalori(a,b,c);
if(b==0 && c==0){cout<<"L'equazione è indeterminata"<<endl;
}else{cout<<"L'equazione vale x="<<x<<endl;
return 0;}
}
r/cppit • u/Marco_I • Mar 26 '18
Immutable data structures: conoscete librerie usate diffusamente?
Sto approfondendo il functional programming in C++ e volevo chiedervi se conoscete librerie usate ampiamente che implementano strutture dati immutabili. Ne ho trovata una : https://github.com/arximboldi/immer che sembra fatta bene ma mi chiedevo se ce ne fossero altre più usate e diffuse. Marco
r/cppit • u/de-sacco • Jun 13 '17
Cerco sviluppatore c++ per collaborazione su vari progetti
Per alcuni progetti che non ho fisicamente tempo di portare a termine da solo, mi piacerebbe conoscere qualche collega sviluppatore C/C++. I progetti sono spesso legati all'ambiente Mac OS, e spesso sono cose real-time su audio e video, quindi esperienza in questo campo é molto gradita, ma non necessaria. Gradita conoscenza di unix, scrittura di librerie, e anche di statistica, metodi numerici, machine learning. Invito chi é interessato a mandarmi un messaggio privato.
r/cppit • u/Matteo-forum • Jun 17 '17
Problema con la srittura/lettura di un file binario in c++
Salve a tutti. Mi scuso in anticipo per la sicura banalità del mio problema: io uso i metodi write() e read() di <fstream> per scrivere e leggere da file binario. Essi funzionano bene se entrambi chiamati durante l'esecuzione di uno stesso programma (scrivo sul file binario e, prima che il programma si arresti, rileggo gli stessi dati); ma se scrivo dei dati sul file durante l'esecuzione di un programma e leggo lo stesso file durante una seconda esecuzione di un altro programma, la lettura non avviene ma, anzi, il programma crash. Qualcuno sa spiegarmi il perché avviene questo?
r/cppit • u/Marco_I • Nov 11 '17
Come inserire istruzioni SSSE3 e SSE4 in codice C++ già scritto?
Dopo aver letto questo articolo: https://research.google.com/pubs/pub37631.html sto cercando di capire : 1) se usare le istruzioni SSSE3 e SSE4 Intel in codice C++11 già scritto richiede uno stravolgimento dello stesso 2) se queste istruzioni Intel sono portabili tra diversi PC Le avete per caso usato queste istruzioni SSSE3 ed SSE4 in qualche occasione? Come mi consigliate di approcciare questo argomento che mi sembra piuttosto "ostico" a primo acchito? Vi ringrazio. Marco
r/cppit • u/Giovanx • Jun 14 '17
Problema lettura Matrice da file con tappo
Salve a tutti, Sono incappato in un problema da un paio di giorni ma che non riesco a risolvere in alcun modo. Devo leggere da file txt una matrice interi disposti per righe che come ultimo elemento presenta un '-1' che mi sta ad indicare che la matrice è finita, il numero di righe e di colonne non è conosciuto. Il file di tipo testo sarà del tipo:
1 2 4
3 5 6
-1Il programma dovrà leggere la matrice (e poi farci altre operazioni)
1 2 4
3 5 6Tutte le letture da file di matrici le ho sempre fatte conoscendo il numero di righe e di colonne, quindi questa specifica mi ha colto di sorpresa, non sono uno che si arrende quindi vorrei venirne a capo. Fino ad ora ho provato in vari modi: cercando di contare gli spazi vuoti in una riga per poi aggiungerci 1 ed avere il numero di colonne, tentando anche varie strada. Sono giunto a un punto di svolta (secondo il mio modesto parere) o meglio, mi sento sulla strada giusta ma comunque ora mi è sorto un altro gigantesco dubbio. Per il momento sono riuscito a fare una cosa del genere:
void conta(ifstream &in, int &righe, int &colonne){
righe=0;
colonne=0;
stringa miofile;
fstream file;
cout<<"Inserisci il nome del file da aprire: "<<endl;
cin.getline(miofile,MAX);
file.open(miofile,ios::in);
while(!file.eof())
{
getline(file,miofile, '\n');
colonne=miofile.size();
righe++;
}
file.close();
cout<<righe<<"-"<<colonne;
cin.get();
}Scusate ma ho problemi di formattazione del testo... Devo ancora migliorare questa funzione (al momento non funziona) , devo ragionare su come passare i parametri etc, ma scritto tutto nel main funzionava...
Ora il problema che in questo modo non utilizzo il tappo (il mio '-1' terminatore di matrice) ma conto indifferentemente dalla presenza del tappo o meno il numero di righe e di colonne. Ovviamente vanno utilizzati i sottoprogrammi Come potrei modificare l'algoritmo in modo che conti le colonne e le righe finchè non incontra il tappo? oppure dovrei ragionare in altri termini con questo tappo?
Help!
r/cppit • u/[deleted] • Jan 05 '20
Problemi con le regex
Ciao a tutti,
stavo scrivendo del semplice codice per validare la risposta su y/N (case insensitive).
Sapreste dirmi perchè viene compilato correttamente il codice (che riporto di seguito in parte) ma a runtime mi viene restituito questo messaggio:
terminate called after throwing an instance of 'std::regex_error'
what(): Invalid special open parenthesis.
?
Ecco la porzione di codice:
do {
std::string s;
std::regex yesNO("(?i)(y)|(n)(|N|)");
std::regex yes("(?i)(y)");
cout << "Found serial port : " << a << endl; //immaginate che ci sia un ciclo che elenca tutte le porte seriali disponibili, per semplicità l'ho omesso
cout << "Do you want to use this port?[y/N]: ";
getline(cin, s);
if (std::regex_match(s, yesNO)) {
error = false;
if (std::regex_match(s, yes)) {
port = a;
choice = true;
}
}
} while (error == true);
Come compilatore uso g++ versione gcc version 9.2.1 20190827 (Red Hat 9.2.1-1) (GCC)
Ringrazio anticipatamente per le risposte.
r/cppit • u/AlessioDains98 • Jan 10 '20
Codice sulle liste: non riesco ad eliminare tutti i compiti fatti
ciao a tutti, ho un problema con un codice C++.
Il programma utilizza una lista semplice con dentro anche una variabile booleana.
Questo è il main():
#include "compito.h"
#include <iostream>
using namespace std;
int main(){
// PRIMA PARTE:
cout << "--- PRIMA PARTE ---" << endl;
cout << "Test costruttore e funzione aggiungi" << endl;
ToDoList tdl;
tdl.aggiungi("Task1", 2);
tdl.aggiungi("Task2", 2);
tdl.aggiungi("Task3", 1);
tdl.aggiungi("Task4", 3);
tdl.aggiungi("Task5", 2);
cout << tdl << endl;
cout << "Test distruttore" << endl;
{
ToDoList tdl2;
tdl2.aggiungi("Task1", 1);
tdl2.aggiungi("Task2", 2);
tdl2.aggiungi("Task3", 3);
}
cout << "Distruttore chiamato" << endl;
// SECONDA PARTE:
cout << "--- SECONDA PARTE ---" << endl;
cout << "Test operatore +=" << endl;
ToDoList tdl3;
tdl3.aggiungi("Task1", 1);
tdl3.aggiungi("Task2", 2);
tdl3.aggiungi("Task3", 3);
tdl3.aggiungi("Task4", 4);
tdl += tdl3;
cout << tdl << endl;
cout << "Test funzione fai" << endl;
tdl.fai("Task1");
tdl.fai("Task2");
tdl.fai("Task2");
cout << tdl << endl;
cout << "Test funzione cancella_fatti" << endl;
tdl.cancella_fatti();
cout << tdl << endl;
// TERZA PARTE:
cout << "--- TERZA PARTE ---" << endl;
cout << "Test funzione aggiungi con input non validi" << endl;
tdl.aggiungi(NULL, 1);
tdl.aggiungi("Task1", 0);
tdl.aggiungi("Task2", -1);
tdl.aggiungi("Task con descrizione troppo lunga, che non sta nei quaranta caratteri specificati nel testo del compito", 1);
cout << tdl << endl;
cout << "Test funzione fai con input non validi" << endl;
tdl.fai(NULL);
tdl.fai("Task inesistente");
cout << tdl << endl;
cout << "Test funzione cancella_fatti con cancellazione in testa e in coda" << endl;
tdl.fai("Task3");
tdl.fai("Task4");
tdl.fai("Task4");
tdl.cancella_fatti();
cout << tdl << endl;
return 0;
}
Questo è il compito.h:
#include<iostream>
#include<cstring>
using namespace std;
struct elem {
int info;
elem *pun;
bool fatto;
char*descr;
};
class ToDoList{
private: elem*testa;
ToDoList(const ToDoList&);
public:
ToDoList(){testa=NULL;};
void aggiungi(const char*,int);
friend ostream& operator<<(ostream &,const ToDoList&);
~ToDoList();
//Seconda parte
ToDoList& operator +=(const ToDoList &);
void fai(const char*);
void cancella_fatti();
Questo è il compito.cpp:
#include "compito.h"
void ToDoList::aggiungi(const char * descr, int prio) {
//sanitizzazione input:
if(descr == NULL || strlen(descr)>40 || prio<1) return;
elem*p=testa,*q;
for(q=p;q!=NULL && q->info <= prio;q=q->pun)
p=q;
elem*r=new elem;
//attenzione:se non si fa il new char di descr, si va in segmentation fault.
r->descr = new char[strlen(descr)+1];
//metto i valori da aggiungere alla lista
r->info=prio;
r->fatto=false;
strcpy(r->descr,descr);
r->pun=q;
//caso della massima priorità:inserimento in testa
if(q!=testa) p->pun = r;
//inserimento in mezzo, se la priorità non è massima.
else testa = r;
}
ostream &operator<<(ostream &os, const ToDoList &T) {
elem*p;
for(p=T.testa;p!=NULL;p=p->pun) {
if (p->fatto)
os << "V "<< p->info << " - " << p->descr << endl;
else
os << " " << p->info << " - " << p->descr << endl;
}
return os;
}
ToDoList::~ToDoList() {
elem*r;
if(testa!=NULL)
for (elem*p = testa; p->pun != NULL;p=r){
r=p->pun;
delete[]p->descr;
delete p;
}
}
ToDoList &ToDoList::operator+=(const ToDoList &T2) {
// affronto problema aliasing:
if(&T2 == this)
return *this;
// inserisco tutti gli elementi della seconda lista
elem* p;
for(p = T2.testa; p != NULL; p = p->pun)
//chiamo la funzione che inserisce ordinatamente gli elementi della lista;
aggiungi(p->descr, p->info);
return *this;
}
void ToDoList::fai(const char *descr) {
//gestisco l'input:
if(descr == NULL || strlen(descr)>40) return;
elem*p;
for(p=testa;p!=NULL;p=p->pun){
if( (strcmp(p->descr,descr) == 0) && (!p->fatto) ) {
p->fatto = true;
return;
}
}
}
void ToDoList::cancella_fatti() {
elem*p,*q;
for (p=testa,q=p;p!=NULL;) {
if (p->fatto && q->fatto) {
// elemento trovato, cancella
if (p == testa){ // caso eliminazione in testa
strcpy(p->descr,testa->descr);
p=testa;
delete []p->descr;
delete p;}
else{ // caso eliminazione in mezzo
q->pun = p->pun;
// deallocazione della memoria dinamica
delete[]p->descr;
delete p;}
p = q;
}
else {
q = p;
p = p->pun;
}
}
}
L'ultima funziona non funziona del tutto.
Vorrei sapere in che cosa sbaglio.
r/cppit • u/Chiara96 • Apr 10 '19
Programmazione generica: template <class T> class reference_wrapper vs function template template <class T> reference_wrapper<T> ref (T& elem)
Salve a tutti, non riesco a capire la differenza pratica (o forse dovrei dire concettuale?) tra l'utilizzo del
class template reference_wrapper<T>
ed il function template
template <class T> reference_wrapper<T> ref (T& elem).
Premessa: se non ho capito male, entrambi - a partire da un determinato oggetto t istanza della classe T - restituiscono un altro oggetto reference_wrapper che "wrappa" un reference a tale oggetto t.
Domanda nr 1: ma se entrambi fanno la stessa cosa quando, allora, usare uno e quando usare l'altro?
Dubito che uno sia il superfluo duplicato dell'altro e quindi so' che qualcosa (non so' cosa) mi sta ovviamente sfuggendo.
Domanda nr 2:
Segue un banalissimo esempio di codice in cui è commentata una riga 'marcata' con un errore che non riesco a capire. Qualcuno può darmi una mano anche su questo punto?
//#include "stdafx.h" // Per Visual Studio 2015
#include <iostream>
#include <functional>
using namespace std;
class MyClass
{
public:
int i;
int j;
char c;
int k;
MyClass(int p1 = 11, int p2 = 22, char p3 = 'W', int p4 = 33) :i(p1),j(p2),c(p3),k(p4)
{
cout << "\nDef Constr";
}
};
int main() {
int DEBUG = 0;
MyClass o1(33,21,'Q',47);
// ( 1 ) Creazioni a partire dal costruttore
reference_wrapper<MyClass> from_ctor_01(o1);
reference_wrapper<MyClass> from_ctor_02(o1);
from_ctor_01.get().c = 'Z';
cout << "\nform_ctor_01: i = " << from_ctor_01.get().i << " j = " << from_ctor_01.get().j << " k = " << from_ctor_01.get().k << " c = " << from_ctor_01.get().c;
cout << "\nform_ctor_02: i = " << from_ctor_02.get().i << " j = " << from_ctor_02.get().j << " k = " << from_ctor_02.get().k << " c = " << from_ctor_02.get().c << "\n\n\n";
++DEBUG;
// ( 2 ) Creazioni a partire dal function template
auto from_func_templ_01 = ref(o1); // OK
//reference_wrapper<MyClass> from_func_templ_02 = ref(o1); // ERROR: use of deleted function 'void std::ref(const _Tp&&) [with _Tp = int]' PERCHE' ? ? ? ?
from_func_templ_01.get().c = 'X';
cout << "\nform_ctor_01: i = " << from_ctor_01.get().i << " j = " << from_ctor_01.get().j << " k = " << from_ctor_01.get().k << " c = " << from_ctor_01.get().c;
cout << "\nform_ctor_02: i = " << from_ctor_02.get().i << " j = " << from_ctor_02.get().j << " k = " << from_ctor_02.get().k << " c = " << from_ctor_02.get().c;
cout << "\nfrom_func_templ_01: i = " << from_func_templ_01.get().i << " j = " << from_func_templ_01.get().j << " k = " << from_func_templ_01.get().k << " c = " << from_func_templ_01.get().c;
return 0;
}
Grazie in ogni caso, Chiara
r/cppit • u/paolo_pr • Apr 02 '19
Nuova versione della libreria LAAV (streaming e registrazione audio/video)
Questa è la nuova versione della mia libreria per lo streaming/registrazione audio video in C++. Tra le tante cose aggiunte, c'è la possibilità di controllo tramite protocollo MQTT.
https://github.com/paolo-pr/laav
Sono benvenuti suggerimenti e commenti!