¿No es un puntero solo una referencia cuando no lo quita?¿No es un puntero solo una referencia cuando no lo desreferencia?
#include "stdafx.h"
#define BOOST_TEST_MODULE example
#include <boost/test/included/unit_test.hpp>
std::list<int>* user_defined_func() {
std::cout << "BEGIN: user_defined_func" << std::endl;
std::list<int>* l = new std::list<int>;
l->push_back(8);
l->push_back(0);
std::cout << "END: user_defined_func" << std::endl;
return l;
}
bool validate_list(std::list<int> &L1)
{
std::cout << "BEGIN: validate_list" << std::endl;
std::list<int>::iterator it1 = L1.begin();
for(; it1 != L1.end(); ++it1)
{
if(*it1<= 1){
std::cout << "Validation failed because an item in the list was less than or equal to 1." << std::endl;
std::cout << "END: validate_list" << std::endl;
return false;
}
}
std::cout << "Test passed because all of the items in the list were greater than or equal to 1" << std::endl;
std::cout << "END: validate_list" << std::endl;
return true;
}
BOOST_AUTO_TEST_SUITE(test)
BOOST_AUTO_TEST_CASE(test)
{
std::list<int>* list1 = user_defined_func();
BOOST_CHECK_PREDICATE(validate_list, (list1));
}
BOOST_AUTO_TEST_SUITE_END()
En la línea,
BOOST_CHECK_PREDICATE(validate_list, (list1));
anterior, me dijeron que no puedo dejar pasar puntero a la función que espera referencia. Pensé que un puntero (que no ha sido desreferenciado) era solo una dirección (es decir, una referencia). ¿Que me estoy perdiendo aqui?
de user_defined_func() Devuelvo un puntero a una lista que ha creado. Así que este puntero se devuelve a la variable de puntero list1 en BOOST_AUTO_TEST_CASE Ahora que la lista1 es un puntero, ¿cómo accedo a la referencia del (objeto?) Al que apunta el puntero list1? – leeand00
@ leeand00: Buena pregunta. He editado mi publicación con mi respuesta. – Bill
Bien, necesitaba cambiar mi función validate_list para que tomara un puntero en lugar de una referencia. Eso lo aclaró. Ha pasado un tiempo desde que hice C++ y no recordaba o no estaba seguro de que hubiera una diferencia entre una referencia y un puntero no desreferenciado. – leeand00