Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-09-2006, 22:18   #1
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Primi passi in c++, ereditarietà quesiti vari

Salve a tutti sto cercando di fare qualcosina in C++ per prendere la mano. Ho creato un progetto con Visual Studio 2005, in pratica devo implementare i metodi di una classe astratta di cui ho questo .h:

//CRubrica.h
class CRubrica{

public:
virtual void AggiungiContatto(char* nome,char* numero) = 0;
virtual void CancellaContatto(char* nome) = 0;
virtual void CancellaRubrica(void) = 0;
virtual void CaricaRubrica(char* nomefile) = 0;

/* Ritorna TRUE se viene trovato un contatto che soddisfa la ricerca,
* FALSE altrimenti.
* Uno dei due parametri puo' essere NULL a seconda del tipo di ricerca effettuata
* La funzione deve stampare a video i dettagli del contatto trovato o un messaggio
* di errore.
* */
virtual bool CercaContatto(char* nome,char* numero) = 0;

/* Questa funzione deve stampare a video i dettagli di tutti i contatti presenti
* nella rubrica */
virtual void StampaRubrica(void) = 0;
virtual void SalvaRubrica(char* nomeFile) = 0;

};


Ora la mia classe deve ereditare questa ed il file .h è combinato in questa maniera:

//RubricaImpl.h
#pragma once
#include "c:\documents and settings\angelo\documenti\visual studio 2005\projects\crubricaimpl\crubricaimpl\crubrica.h"

class CRubricaImpl :
public CRubrica
{
public:
CRubricaImpl(void);
void AggiungiContatto(char* nome,char* numero);
void CancellaContatto(char* nome);
void CancellaRubrica(void);
void CaricaRubrica(char* nomefile);
bool CercaContatto(char* nome,char* numero);
void StampaRubrica(void);
void SalvaRubrica(char* nomeFile);

public:
~CRubricaImpl(void);
};


Ora i miei dubbi sorgono adesso: Ho fatto bene a ridichiarare tutti i prototipi della superclasse nella sottoclasse evitando, ovviamente dal mio punto di vista, di definirli virtual?

Il file RubricaImpl.cpp definisce quei metodi (ancora sono vuoti però questo sarà lo scopo) in questo modo:
es:
void CRubricaImpl::AggiungiContatto(char* nome,char* numero){

;
}

Ora se provo a compilare il progetto, dove ancora non ho inserito nessuna linea di codice ma solo le strutture, diciamo così, mi viene dato questo errore che non comprendo:

------ Build started: Project: Primo, Configuration: Debug Win32 ------
Linking...
MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
C:\Documents and Settings\angelo\Documenti\Visual Studio 2005\Projects\Primo\Debug\Primo.exe : fatal error LNK1120: 1 unresolved externals
Build log was saved at "file://c:\Documents and Settings\angelo\Documenti\Visual Studio 2005\Projects\Primo\Primo\Debug\BuildLog.htm"
Primo - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Che vuole dire? Io non ho scritto nulla di particolare, ho solo definito i prototipi e nella classe cpp ho scritto le funzioni (ancora vuote al loro interno, non vado avanti fino a quando non risolvo questo problema).
Cosa mi indica l'errore=
Cosa devo fare?
Grazie, ciao ciao.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 21-09-2006, 22:23   #2
TempestaT400
Member
 
Iscritto dal: Jan 2006
Messaggi: 92
credo che i problemi siano sugli include!
usando #include "xxx"
quando il parametro è tra apici, se non ricordo male, significa che il file header che si sta includendo fa parte del progetto e non del framework del compilatore.!.
prova a mettere solamente

#include "CRubrica.h"
__________________
L'unico computer sicuro è un computer spento!!!
TempestaT400 è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 07:20   #3
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Sono riuscito a risolvere, visual studio voleva una classe con il main, che nel mio progetto mancava.
Invece per quanto riguarda l'ereditarietà da una classe astratta, nel prototipo della sottoclasse ho ridichiarato i metodi che erano astratti, stavolta come non virtual e non =0. Questa operazione era necessaria? Potevo direttamente scrivere i metodi, con il loro relativo codice, senza dichiarali nuovamente nel file .h della sottoclasse?
Grazie, ciao ciao.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 09:22   #4
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16215
Quote:
Originariamente inviato da TempestaT400
quando il parametro è tra apici, se non ricordo male, significa che il file header che si sta includendo fa parte del progetto e non del framework del compilatore
Più esattamente:
- se il nome dell'header è tra minore e maggiore, allora il path assoluto inizia nel modo predefinito, ad esempio con /usr/include ;
- se è tra doppi apici, inizia dalla cartella corrente.

Per esempio, se sei sotto Linux con un'installazione "standard" e la cartella del progetto è /home/tempesta/proganzo , allora '#include <stdio.h>' dice al compilatore di includere /usr/include/stdio.h , mentre '#include "attrezzi/attrezzi.h"' dice di includere /home/tempesta/proganzo/attrezzi/attrezzi.h .
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 12:16   #5
TempestaT400
Member
 
Iscritto dal: Jan 2006
Messaggi: 92
è da tanto che non tocco c++... ricordavo a larghi linee!!!
__________________
L'unico computer sicuro è un computer spento!!!
TempestaT400 è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2006, 15:34   #6
giangian2
Member
 
L'Avatar di giangian2
 
Iscritto dal: Dec 2005
Città: Provincia di Vicenza
Messaggi: 174
Quote:
Originariamente inviato da Abdujaparov
Invece per quanto riguarda l'ereditarietà da una classe astratta, nel prototipo della sottoclasse ho ridichiarato i metodi che erano astratti, stavolta come non virtual e non =0. Questa operazione era necessaria? Potevo direttamente scrivere i metodi, con il loro relativo codice, senza dichiarali nuovamente nel file .h della sottoclasse?
Grazie, ciao ciao.
Ciao,
la definizione corretta della "sottoclasse" e` "Classe derivata" .
Per quanto riguarda la classe derivata e` corretto ridefinire nel file .h le funzioni virtuali, questa volta non astratte (quindi togliendo " = 0").
Sul fatto di ridichiarare le funzioni come "virtual" o meno, sulla classe derivata, a livello pratico non cambia niente, perche` se una funzione e` virtuale nella classe base lo e` anche su tutte le classi derivate. Io personalmente se una funzione e` dichiarata come virtuale nella classe base, la ridichiaro virtual anche i tutte le classi derivate, in modo da capire velocemente se tale funzione e` della classe base o una funzione dichiarata nella classe derivata.

ciaooo
giangian2 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
La Via Lattea potrebbe essere nata da mi...
Una GTX 1080 Ti su Windows XP nel 2026: ...
Google limita l'uso gratuito di Gemini: ...
Grokipedia, la versione 0.3 introduce un...
L'UE testa l'alternativa sovrana a Micro...
Una mezzanotte importante: al via il Pri...
Honor Magic 9 arriva in Europa a gennaio...
Huawei non si ferma: la nuova serie Mate...
Fusione Paramount-Warner Bros., deciso i...
Samsung Galaxy A in offerta: A27 a 234€,...
OpenAI lo ha bannato mentre creava una n...
Amazon, maxi investimento per sostenere ...
L'hacker che ha attaccato l'FBI fermato ...
Meta ha trovato un modo per risparmiare ...
Il prossimo chip a 2 nm di Samsung potre...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:17.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v