Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 从VS 2013到VS 2017的电话簿GUI转换不起作用_Visual Studio_Visual Studio 2013_Visual Studio 2017_C++ Cli - Fatal编程技术网

Visual studio 从VS 2013到VS 2017的电话簿GUI转换不起作用

Visual studio 从VS 2013到VS 2017的电话簿GUI转换不起作用,visual-studio,visual-studio-2013,visual-studio-2017,c++-cli,Visual Studio,Visual Studio 2013,Visual Studio 2017,C++ Cli,我们在类中创建了反向电话簿查找。我们的学校系统在我们的机器上使用VS 2013,我在我的家用电脑上使用VS 2017。在学校构建的程序在VS 2013上运行良好,但当我加载VS 2017并尝试执行它时,我发现以下三个错误: Severity Code Description Project File Line Suppression State Error (active) E0442 too few arguments for class template "std::array" GUIPh

我们在类中创建了反向电话簿查找。我们的学校系统在我们的机器上使用VS 2013,我在我的家用电脑上使用VS 2017。在学校构建的程序在VS 2013上运行良好,但当我加载VS 2017并尝试执行它时,我发现以下三个错误:

Severity Code Description Project File Line Suppression State Error (active) E0442 too few arguments for class template "std::array" GUIPhoneBook c:\Users\diabl\source\repos\GUIPhoneBook\GUIPhoneBook\MyForm.cpp 12

Severity Code Description Project File Line Suppression State Error C2976 'std::array': too few template arguments  GUIPhoneBook c:\users\diabl\source\repos\guiphonebook\guiphonebook\myform.cpp 13

Severity Code Description Project File Line Suppression State Error C3699 '^': cannot use this indirection on type 'std::array' GUIPhoneBook c:\users\diabl\source\repos\guiphonebook\guiphonebook\myform.cpp 13
这是我在MyForm.cpp中的内容

#include "MyForm.h"
#pragma once

using namespace System;

using namespace System::Windows::Forms;


[STAThread]

int Main(array<System::String ^> ^args)

{

    Application::EnableVisualStyles();

    Application::SetCompatibleTextRenderingDefault(false);


    Application::Run(gcnew GUIPhoneBook::MyForm());

    return 0;

}
#包括“MyForm.h”
#布拉格语一次
使用名称空间系统;
使用命名空间System::Windows::Forms;
[状态线程]
int Main(数组^args)
{
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
Application::Run(gcnew-GUIPhoneBook::MyForm());
返回0;
}
对于C++和构建GUI我是相当新的,所以我不知道这意味着什么。我搜索了这个论坛,阅读了一些类似于此的问题的解决方案,但它们都不起作用。有人对修复有什么想法吗?谢谢

对于C++,我是相当新的…… 标准“学习语言”警告:这不是C++,你在写,是C++ + CLI。C++/CLI是一种微软语言,旨在允许C++语言或其他.NET语言与标准C++接口。在这种情况下,C++/CLI可以提供两者之间的转换。如果你还在学习C++,请不要从C++开始。为了有效地在C++中编写,人们应该已经知道C++和C语言,然后还有一些东西要学习C++和CLI。如果你想学习C++,请坚持标准(非托管)C++。(在VisualStudio中,创建一个“Win32”C++项目)。如果您想学习托管代码,那么我将使用C*y.
也就是说

int Main(array<System::String ^> ^args)
int Main(数组^args)
我没有调查原因,但出于某种原因,VS2017首先查找
std::array
,而VS2013首先查找
cli::array
。正如您可能从收到的错误消息中猜测的那样,这两个类采用不同的模板/泛型参数。(
std::array
采用类型和大小,
cli::array
采用类型并在创建对象时指定大小。)


要解决此问题,可以在main声明中显式指定
cli::
。还可能有一个
使用名称空间std或使用命名空间cli添加
也可以工作。

错误消息指的是
std::array
,但是您显示的代码似乎没有在任何地方使用
std::array
,这表明您显示的代码可能与错误无关,因此,在我们提供帮助之前,您可能需要找到导致错误的代码。好的,我将添加MyForm.h,它存在您可能认为存在的问题。错误消息在MyForm.cpp的第12行或第13行显示。我发布的第一个代码是MyForm.cpp中的所有内容,没有其他内容。我刚试过大卫·雅斯的建议,它奏效了。真棒,它奏效了。我也会让我的教授知道这个小把戏,我真的很感激。我们还没有讨论CLI,但我相信我们会继续学习C++。