我正在使用c ++在visual studio窗口窗体上制作tic tac toe游戏。 如何将此C#代码转换为C ++代码?
private Void disableButtons()
{
try
{
foreach (Control c in Controls)
{
Button b = (Button)c;
b.Enabled = false;
}
}
catch{ }
}
答案 0 :(得分:1)
如果没有使用具有类控制和按钮的任何其他库,并且Button类具有"已启用"则无法将其转换为纯C ++代码。公共成员。 但是,您可以将其转换为 C ++ / CLI 代码,您也可以在其中混合使用纯C ++代码。
private Void disableButtons()
{
try
{
for each (Control^ c in Controls)
{
Button^ b = (Button^)c;
b->Enabled = false;
}
}
catch{ }
}
答案 1 :(得分:0)
以下是如何在c ++中使用C#的foreach
的示例:
#include <iostream>
int main()
{
const int SIZE = 3;
int myArray[SIZE] = { 1, 2, 3 };
for (int & i : myArray) // make sure to put the &
{
i = i + 10;
}
for (int i = 0; i < SIZE; i++)
{
std::cout << myArray[i] << std::endl;
}
return 0;
}
语法应如下所示:
for(type name : collection) { // your code here }
你可以把&amp;如果要更改原始元素,请在类型和名称之间
for(type & name : collection) { // your code here }
答案 2 :(得分:0)
你已经标记了这个Visual C ++,所以我假设你正在使用MFC。如果你使用Qt或wxWidgets或其他东西,答案会有所不同。
如果您已经拥有了一个容器中的控件ID,那么每个容器上都有:
CWnd *c = GetWindow(GW_CHILD);
while (c)
{
c->EnableWindow(FALSE);
c = c->GetNextWindow(GW_HWNDNEXT);
}
但是,如果你没有这样一个控件容器,但不知何故想继续迭代所有控件:
def countSumOfTwoRepresentations2(n, l, r):
c=0
for i in range(l,r+1):
for j in range(l,i+1):
if(i+j==n):
c+=1
return(c)
我建议使用第一个选项,因为您可以具体了解要修改的控件。如果您只想要按钮,第二个选项会很棘手。