Инициализация временного совокупного объекта с помощью фигурных скобок

То, что я предполагаю, - то, что необходимо установить те входные элементы на runat = "сервер" .

, Таким образом, Вы не будете в состоянии получить доступ к управлению

<input type="text" name="email" id="myTextBox" />

, Но Вы будете в состоянии работать с

<input type="text" name="email" id="myTextBox" runat="server" />

И читать из него при помощи

string myStringFromTheInput = myTextBox.Value;
5
задан sth 6 October 2009 в 21:05
поделиться

3 ответа

Все, что вы хотите, возможно со списками инициализаторов C ++ 0x.

class Aggregate {
public:
    int x, y;
};

void frobnicate(const Aggregate& arg) {

}

int main() {
    frobnicate({1, 2});
    return 0;
}

GCC 4.4 уже поддерживает это с флагом -std = c ++ 0x . Возможно, VS2010 CTP тоже поддерживает это (поправьте меня, если я ошибаюсь).

В C ++ 98 / C ++ 03 вам придется писать и вызывать конструктор.

8
ответ дан 13 December 2019 в 05:38
поделиться

Сейчас это невозможно. По этой причине новый стандарт C ++ 0x представил концепцию списков инициализаторов и Uniform_initialization .

3
ответ дан 13 December 2019 в 05:38
поделиться

«Есть много решений, но мне просто любопытно, можно ли достичь этой цели с помощью инициализации фигурных скобок»

Невозможно. Если вы не можете изменить источник, то вам остается только обернуть его во встроенную функцию или вспомогательную структуру:

struct AggregateHelper
{
    Aggregate a;
    AggregateHelper(int x, int y) { a.x=x; a.y=y; }
    operator const Aggregate& () { return a; }
};

frobnicate(AggregateHelper(1500,2900));

edit : удалено нерелевантное решение конструктора.

1
ответ дан 13 December 2019 в 05:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: