Я пытаюсь разрешить цепочку методов в конструкторе, и я столкнулся с той же проблемой на этом C++ method chaining including class constructor, и я попробовал предложенные ответы, но все еще получаю ту же ошибку. Мой код ниже:C++ Метод chaining на конструкторе
class Signal {
public:
Signal() { }
Signal& Emphasize() {
return *this;
}
};
enum ReadType { NATIVE = 0, DOUBLE, };
class Wav : public Signal {
public:
Wav(string fileName, ReadType type) {
}
};
Я пытался дозвониться из следующих функций:
Wav* wave = new Wav("asf", DOUBLE).Emphasize();
И:
Wav wave = Wav("asf", DOUBLE).Emphasize();
Я не знаю, есть ли возможно, так как сам процесс «Подчеркните «это не конструктор, но, надеюсь, мне будет разрешен доступ к нему. Что я могу делать неправильно здесь, чтобы это не сработало?
Надежда кто-то может помочь :)
UPDATE:
я ставлю "Подчеркните()" в качестве члена класса внутри "Wav", и она работала, как я хотел. НО кто-нибудь знает, как я могу получить доступ к этому члену внутри «Сигнала», не помещая член класса внутри «Wav»?
UPDATE:
class Signal {
public:
Signal() { }
Signal* Emphasize() {
return this;
}
};
enum ReadType {
NATIVE = 0, DOUBLE,
};
class Wav : public Signal {
public:
Wav(string fileName, ReadType type) {
}
};
int main(int argc, char *argv[]) {
Wav* wave = new Wav("asf", DOUBLE)->Emphasize();
}
Подсказка: 'new' expre ssion возвращает указатель. – jrok
Для чего (я думаю), вы пытаетесь достичь, [Именованный параметр Idiom] (http://www.parashift.com/c++-faq/named-parameter-idiom.html) может быть лучше подходит. – jrok
Итак, вы сами ответили на это, потому что решение в обновлении - это то, что я бы предложил. Проблема заключается в том, что вы не можете выполнять цепочку методов, которая работает для распределения кучи и стека. –