Class C++类库

Class C++类库,class,c++-cli,Class,C++ Cli,我打开了win32控制台应用程序并添加了类库。我目前正试图使用这个类库,但当我用名称空间名称设置类库时,我似乎无法使用字符串数据类型。它表示类System::String不存在默认构造函数。我想不出如何消除这个错误 头文件 #pragma once using namespace System; using namespace System::Net::Sockets; namespace [Name]{ public ref class [Name] { private: Syst

我打开了win32控制台应用程序并添加了类库。我目前正试图使用这个类库,但当我用名称空间名称设置类库时,我似乎无法使用字符串数据类型。它表示类System::String不存在默认构造函数。我想不出如何消除这个错误

头文件

#pragma once
using namespace System;
using namespace System::Net::Sockets;

namespace [Name]{

public ref class [Name]
{
private:
    System::String ipaddress;
    System::String port;

public:
    [Constructor](System::String,System::String,System::String);
};
}
CPP文件

//这是主DLL文件

#include "stdafx.h"
#include "header file"

namespace [Name] {

[Name]::[Constructor](System::String ip,System::String portN,System::String protocol)
{
    ipaddress = ip;
    port = portN;

}
}

您创建了错误的项目类型

创建Win32项目或空项目

您已经创建了一个类库,它位于“新建项目”对话框中的CLR类别下。这意味着你没有得到一个C++项目,而是一个C++/CLI项目。

C++/CLI是另一个最佳选择。作为记录,您的代码必须如下所示:

namespace NamespaceName
{

    public ref class ClassName
    {
    private:
        System::String^ ipaddress;
        System::String^ port;

    public:
        ClassName(System::String^ ip, System::String^ port, System::String^ protocol);
    };

}
这些^字符表示该类型是托管句柄。 将它们视为*,但指向一个托管对象


但是考虑到你试图遵循的教程,这不是你想要的。因此,创建一个简单的C++项目,使用STD::String代替Strase::String,它是托管类型。C++是一个C++或C++/CLI项目吗?一个真正的Win32控制台项目不是C++ + CLI,因此你不能在这些项目中使用BCL类型,如Stry.String。还有,代码中的[/]字符还是你的名字模糊?我不知道VisualC++有什么特殊的特性,但是通常你必须包括相应的头文件来让类可用。在使用System::String之前,我看不到任何包含的标题。如果在STDAFX.H中定义了类,我建议将这个头包含在头文件中。您的代码是C++ + CLI,而不是标准C++。我已经更新了分配给你的帖子的标签,但以后请适当地给你的帖子贴上标签。我正试图遵循msdn上的本教程