Различать конструктор по умолчанию и «настоящий» конструктор? ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
Различать конструктор по умолчанию и «настоящий» конструктор?

Сообщение Anonymous »

Я работаю над сетевой библиотекой и столкнулся с проблемой класса: его «настоящий» конструктор (то есть тот, который действительно должен использоваться для создания функционального объекта, а не конструктора по умолчанию) не работает. необходимо принимать какие-либо аргументы, поэтому он является конструктором по умолчанию (или, скорее, его единственный аргумент имеет значение по умолчанию, поэтому его значение по умолчанию неоднозначно).
Причина, по которой это важно, заключается в том, что если я хочу объявить переменную этого типа класса, еще не определив ее, мне нужен конструктор по умолчанию, чтобы не делать ничего, что зависит от чего-то еще.
< pre class="lang-cpp Prettyprint-override">

Код: Выделить всё

class Foo
{
public:
Foo()
{
m_int = 0;
// do stuff that requires a dependency to be initialized
}

void doSomething() {}

private:
int m_int;
}

class Bar
{
public:
Bar()
{
m_foo.doSomething();
}

private:
Foo m_foo; // this will run code that can't run yet since the dependency can't be initialized at compile time!
}
Я знаю, что могу создать метод init(), который выполняет работу с зависимостями, но я не делал этого для других классов в библиотеке, а затем я придется сделать это за всех из них. Я также знаю, что могу просто использовать указатели, и тогда эта проблема исчезнет.
Решение, которое я придумал, состоит в том, чтобы просто поместить фиктивный параметр char в реальный конструктор, что я считаю глупым. Я ищу, не придумает ли кто-нибудь что-нибудь новое, что я мог бы использовать.

Подробнее здесь: https://stackoverflow.com/questions/788 ... onstructor

Вернуться в «C++»