То, что я предполагаю, - то, что необходимо установить те входные элементы на runat = "сервер" .
, Таким образом, Вы не будете в состоянии получить доступ к управлению
<input type="text" name="email" id="myTextBox" />
, Но Вы будете в состоянии работать с
<input type="text" name="email" id="myTextBox" runat="server" />
И читать из него при помощи
string myStringFromTheInput = myTextBox.Value;
Все, что вы хотите, возможно со списками инициализаторов 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 вам придется писать и вызывать конструктор.
Сейчас это невозможно. По этой причине новый стандарт C ++ 0x представил концепцию списков инициализаторов и Uniform_initialization .
«Есть много решений, но мне просто любопытно, можно ли достичь этой цели с помощью инициализации фигурных скобок»
Невозможно. Если вы не можете изменить источник, то вам остается только обернуть его во встроенную функцию или вспомогательную структуру:
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 : удалено нерелевантное решение конструктора.