Скажем, у меня есть следующий код:подталкивания shared_ptr на объект класса
controller.hpp
#include "testing.hpp"
#include <boost/shared_ptr.hpp>
class controller
{
public:
controller(void);
void test_func (void);
boost::shared_ptr <testing> _testing;
}
controller.cpp
#include "controller.hpp"
controller::controller() {
boost::shared_ptr <testing> _testing (new testing);
std::cout << _testing->test_bool << std::endl;
}
void controller::test_func (void) {
// how to use _testing object?
std::cout << _testing->test_bool << std::endl;
return;
}
int main (void) {
controller _controller; // constructor called
test_func();
return 0;
}
testing.hpp
class testing
{
public:
bool test_bool = true;
}
Am Я использую shared_ptr
pro perly здесь для члена класса? Многим функциям класса controller
необходимо использовать объект _testing
, и я не хочу, чтобы конструктор/деконструктор классов testing
вызывался каждый раз, когда указатель выходит из области видимости. Возможно, этого нельзя избежать, я начинаю понимать.
Я бы использовал 'boost :: make_shared', а не' new'. '.get()' бессмысленно, как вы его использовали. Кроме того, в вашей 'main()' нет переменной с именем '_testing', поэтому она не будет компилироваться. –
ОК. Ты прав. Я пытаюсь использовать '_testing' для всех функций в классе' controller', не называя его конструктором каждый раз. – xinthose