Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-03-2011, 12:22   #1
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
[C++] Errore Definizione Multipla con cppUnitTest in Eclipse

Ho creato unporgetto C++, scritto file c e h. Compilo e tutto funziona. Se vado a creare dei testCase usando ECUT mi da 'multiple definition of' e non riesco a capire il perchè. Vi posto i codici:
Item.h
Codice:
/*
 * Item.h
 *
 *  Created on: Mar 30, 2011
 *      Author: manuel
 */
#include <stdio.h>
#include <fstream>
#include <string>

#ifndef ITEM_H_
#define ITEM_H_

class Item {

private:
	std::string name;
	int price;
	FILE picture;

public:
	Item(const std::string&, int&, FILE&);
	int & getPrice();
	std::string & getName();
	FILE & getPicture();
	~Item();
};

#endif /* ITEM_H_ */
Item.cpp
Codice:
/*
 * Item.cpp
 *
 *  Created on: Mar 30, 2011
 *      Author: manuel
 */

#include "Item.h"
using namespace std;

Item::Item(const string& aName, int& aPrice, FILE& aFile) {
	name = aName;
	price = aPrice;
	picture = aFile;
}
;

int& Item::getPrice() {
	return price;
}
;

string& Item::getName() {
	return name;
}
;

FILE& Item::getPicture() {
	return picture;
}
;
e come detto fino a qui funziona tutto.

Creando ItemTest.h
Codice:
#ifndef TEST_ItemTest
#define TEST_ItemTest

#ifdef ECUT_MAIN

#include "cppunit/extensions/HelperMacros.h"

class ItemTest : public CPPUNIT_NS::TestFixture {
public:
	void setUp();
	void tearDown();
	void testItem__Item();
	void testItem__getPrice();
	void testItem__getName();
	void testItem__getPicture();
	CPPUNIT_TEST_SUITE(ItemTest);
	CPPUNIT_TEST(testItem__Item);
	CPPUNIT_TEST(testItem__getPrice);
	CPPUNIT_TEST(testItem__getName);
	CPPUNIT_TEST(testItem__getPicture);
	CPPUNIT_TEST_SUITE_END();
};

#endif /* ECUT_MAIN */

#endif /*ITEMTEST*/
e ItemTest.cpp
Codice:
#ifdef ECUT_MAIN
#include "ItemTest.h"

#include "../src/Item.cpp"

CPPUNIT_TEST_SUITE_REGISTRATION(ItemTest);


void ItemTest::setUp()
{
}
void ItemTest::tearDown()
{
}
void ItemTest::testItem__Item() {
	CPPUNIT_ASSERT(false);
}
Mi da errore:
Codice:
./src/Item.o: In function `Item':
/home/manuel/Eclipse/Test/ECUTTest/../src/Item.cpp:11: multiple definition of `Item::Item(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int&, _IO_FILE&)'
./test/ItemTest.o:/home/manuel/Eclipse/Test/ECUTTest/../test/../src/Item.cpp:11: first defined here
./src/Item.o: In function `Item':
/home/manuel/Eclipse/Test/ECUTTest/../src/Item.cpp:11: multiple definition of `Item::Item(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int&, _IO_FILE&)'
./test/ItemTest.o:/home/manuel/Eclipse/Test/ECUTTest/../test/../src/Item.cpp:11: first defined here
./src/Item.o: In function `Item::getPrice()':
/home/manuel/Eclipse/Test/ECUTTest/../src/Item.cpp:18: multiple definition of `Item::getPrice()'
./test/ItemTest.o:/home/manuel/Eclipse/Test/ECUTTest/../test/../src/Item.cpp:18: first defined here
./src/Item.o: In function `Item::getName()':
/home/manuel/Eclipse/Test/ECUTTest/../src/Item.cpp:23: multiple definition of `Item::getName()'
./test/ItemTest.o:/home/manuel/Eclipse/Test/ECUTTest/../test/../src/Item.cpp:23: first defined here
./src/Item.o: In function `Item::getPicture()':
/home/manuel/Eclipse/Test/ECUTTest/../src/Item.cpp:28: multiple definition of `Item::getPicture()'
./test/ItemTest.o:/home/manuel/Eclipse/Test/ECUTTest/../test/../src/Item.cpp:28: first defined here
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 30-03-2011, 12:55   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Suppongo che il colpevole sia lui:

Codice:
#include "../src/Item.cpp"
Perchè mai fare l'include di un file cpp?
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 30-03-2011, 17:30   #3
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Suppongo che il colpevole sia lui:

Codice:
#include "../src/Item.cpp"
Perchè mai fare l'include di un file cpp?
I file test vengono creati in automatico dal plugin ECUT per fare i test... Se faccio lo stesso lavoro con 2 file sample dati con ECUT, funziona.
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 30-03-2011, 17:51   #4
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Emaborsa Guarda i messaggi
I file test vengono creati in automatico dal plugin ECUT per fare i test... Se faccio lo stesso lavoro con 2 file sample dati con ECUT, funziona.
Non conosco ECUT ma sicuramente stai compilando 2 volte il file Item.cpp.
Quindi dovresti rivedere il progetto, magari è già incluso quel file e con l'include ottieni la doppia compilazione.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 30-03-2011, 20:36   #5
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Non conosco ECUT ma sicuramente stai compilando 2 volte il file Item.cpp.
Quindi dovresti rivedere il progetto, magari è già incluso quel file e con l'include ottieni la doppia compilazione.
Ammetto che non dono esperto di C++, ma la tua frase mi fa capire che da il problema sta nel fatto che faccio include 2 volte dello stesso file, e per questo da errore. Giusto?

EDIT

Se elimino gli include dal Test.cpp compila tutto. Però ora, non avendo l'include del file Item.cpp, come faccio a instanziare un oggetto di tipo Item nella classe ItemTest.cpp?
__________________
Vendo...nulla.
Cerco...la felicità
.

Ultima modifica di Emaborsa : 30-03-2011 alle 21:10.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 30-03-2011, 21:47   #6
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Emaborsa Guarda i messaggi
Ammetto che non dono esperto di C++, ma la tua frase mi fa capire che da il problema sta nel fatto che faccio include 2 volte dello stesso file, e per questo da errore. Giusto?
Esattamente.
Quasi sicuramente il file è già incluso nel progetto che stai compilando.

Quote:
EDIT

Se elimino gli include dal Test.cpp compila tutto. Però ora, non avendo l'include del file Item.cpp, come faccio a instanziare un oggetto di tipo Item nella classe ItemTest.cpp?
Semplicemente includendo Item.h al posto di Item.cpp in ItemTest.cpp.
Includere i file cpp è una pratica decisamente sconsigliata, oltre che perfettamente inutile.
Mi stupisce come un tool automatico possa adottare tale strategia.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 30-03-2011, 21:55   #7
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Esattamente.
Quasi sicuramente il file è già incluso nel progetto che stai compilando.



Semplicemente includendo Item.h al posto di Item.cpp in ItemTest.cpp.
Includere i file cpp è una pratica decisamente sconsigliata, oltre che perfettamente inutile.
Mi stupisce come un tool automatico possa adottare tale strategia.
Porca miseria hai ragione Sembra funzionare. Ora faccio delle prove
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Il processo produttivo a 2 nm di TSMC è ...
L'atteso aggiornamento dei driver della ...
The Elder Scrolls VI nel 2029 e Fallout ...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
19.000 Pa a un prezzo senza precedenti: ...
Narwal in super offerta su Amazon: robot...
SK hynix e NVIDIA lavorano a un SSD spec...
Roborock in super offerta su Amazon: pre...
Dreame abbassa i prezzi su Amazon: robot...
ECOVACS Deebot torna protagonista su Ama...
Il primo iPhone pieghevole potrebbe esse...
Apple 'apre' iOS alle terze parti anche ...
Cloud sovrano: l'approccio di Broadcom c...
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: 14:34.


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