我正在尝试将数组指针和函数指针一起随机声明。我被打中了。
#include<bits/stdc++.h>
int add(int a,int b){
return 1729; }
int main(){
int (abc)(int,int);
abc = add;
return 0;
}
发出的错误是:
cannot convert 'int(int, int)' to 'int(int, int)' in assignment
但是由于abc
和add
属于同一类型,为什么要转换?还是可以将函数分配给新变量?如果是这样,该怎么做?
答案 0 :(得分:14)
[System.Runtime.InteropServices.DllImport("advapi32.dll", SetLastError = true, CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
private void Button_Click(object sender, RoutedEventArgs e)
{
try
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.InitialDirectory = "c:\\";
dlg.Filter = "Image files (*.jpg)|*.jpg|All Files (*.*)|*.*";
dlg.RestoreDirectory = true;
if (dlg.ShowDialog() == true)
{
string filepath = dlg.FileName;
// File.Copy(filepath, @"\\172.18.2.33\c$\Mediinfotec" + dlg.SafeFileName, true);
IntPtr tokenHandle = new IntPtr(0);
tokenHandle = IntPtr.Zero;
bool returnValue = LogonUser(@"prime\mediinfo", "prime", "medi@111", 9, 0, ref tokenHandle);
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.UnauthenticatedPrincipal);
WindowsIdentity wid = new WindowsIdentity(tokenHandle);
WindowsImpersonationContext context = wid.Impersonate();
File.Copy(filepath, @"\\172.18.2.33\c$\Mediinfotec\" + dlg.SafeFileName);
context.Undo();
}
}
catch (Exception ex)
{
throw;
}
}
它不是函数指针。在这种情况下,多余的括号无关紧要,它等效于
Dad#printMe
这是一个函数 declaration ,该C ++允许您将其放置在几乎任何地方(例如另一个函数的主体)。您的代码无法编译,因为您尝试将一个功能名称分配给另一个。
要获取指针,您需要指针语法
getMe
这一次需要括号 ,否则您将获得带有Son
返回类型的函数声明!现在,任务将格式正确。