Следующая операция является частью кассового аппарата.C++ Невозможно преобразовать параметр из '* type' в 'const type &'
Для того, чтобы сгенерировать счет, я должен считать товары:
1. Каждый товар добавляется один раз к счету.
2. Если продукт уже существует в этом счете, его количество увеличивается.
void CashRegister::countProducts()
{
OMIterator<Product*> iter(itsProduct);
CountedProduct* cp;
Product* p;
// Iterate through all products counting them
while (*iter) {
// get the next product
p = *iter;
// has this already been added?
cp = getItsCountedProduct(p->getBarcode());
// If it does not exist then add it else increment it
if (NULL==cp) {
addItsCountedProduct(p->getBarcode(), new CountedProduct(p));
} else {
cp->increment();
}
// point to next
++iter;
}
и:
void CashRegister::addItsCountedProduct(int key, CountedProduct* p_CountedProduct)
{
if(p_CountedProduct != NULL)
{
NOTIFY_RELATION_ITEM_ADDED("itsCountedProduct", p_CountedProduct, false, false);
}
else
{
NOTIFY_RELATION_CLEARED("itsCountedProduct");
}
itsCountedProduct.add(key,p_CountedProduct);
}
Я получаю следующее сообщение об ошибке:
ошибка C2664: 'CountedProduct :: CountedProduct': не удается преобразовать параметр 1 из 'Product *', чтобы 'const CountedProduct &'
Ошибка повторная к этой строке:
addItsCountedProduct(p->getBarcode(), new CountedProduct(p));
Любые идеи?
Вы не показываете свой конструктор для 'CountedProduct', но' p' является 'продуктом *', и ошибка, кажется, указывает, что у вас есть только 'CountedProduct (const CountedProduct &)'? – crashmstr
C++ не является C# или Java. Не вводите в заблуждение аналогичный синтаксис или знакомые ключевые слова, это совершенно другой язык, культура программирования и набор парадигм. Прежде чем продолжить, вы можете сначала узнать больше о «путях C++»: [The Definitive C++ Book Guide and List] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide- и-list) (начните с передовой практики и промежуточных разделов). – Drop