Различать конструктор по умолчанию и «настоящий» конструктор?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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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