C++ 文字 char* 或字符串变量错误 "cannot be a literal data member"
C++ literal char* or string variable error "cannot be a literal data member"
我正在开发一个依赖于 C++/CLI 项目的 C# 项目。我正在使用一些文字成员(它们是 C# 中的常量),使用我的 C# 项目可以作为常量访问的 int
或 unsigned short
等类型。我想对字符串做同样的事情。因为它在 C# 中是可能的,所以我尝试在 C++ 中做...然后我 运行 进入问题。
using namespace System;
namespace TestNamespace
{
static ref class TestClass
{
literal char* TestString = "fish";
};
}
IntelliSense 没有给我错误,但是当构建这段代码时,出现了这个错误:
"'TestNamespace::TestClass::TestString': 不能是文字数据成员"
我已经将 char* 更改为 const char*,std::string,以及指向其他类型字符的指针。我在互联网上做了很多关于这些东西的挖掘工作并了解了其中的一些内容,但我不知道为什么这不起作用。我还阅读了有关字符串文字的内容,并认为这会对我有所帮助。很高兴知道,但在这种情况下不一定。
.NET 中的字符串是 System::String^
数据类型,因此您需要将其声明为该类型,而不是 char*
。
using namespace System;
namespace TestNamespace
{
static ref class TestClass
{
literal String^ TestString = "fish";
};
}
现在 TestString
将在 C# 中显示为 TestNamespace.TestClass.TestString
。
我正在开发一个依赖于 C++/CLI 项目的 C# 项目。我正在使用一些文字成员(它们是 C# 中的常量),使用我的 C# 项目可以作为常量访问的 int
或 unsigned short
等类型。我想对字符串做同样的事情。因为它在 C# 中是可能的,所以我尝试在 C++ 中做...然后我 运行 进入问题。
using namespace System;
namespace TestNamespace
{
static ref class TestClass
{
literal char* TestString = "fish";
};
}
IntelliSense 没有给我错误,但是当构建这段代码时,出现了这个错误: "'TestNamespace::TestClass::TestString': 不能是文字数据成员"
我已经将 char* 更改为 const char*,std::string,以及指向其他类型字符的指针。我在互联网上做了很多关于这些东西的挖掘工作并了解了其中的一些内容,但我不知道为什么这不起作用。我还阅读了有关字符串文字的内容,并认为这会对我有所帮助。很高兴知道,但在这种情况下不一定。
.NET 中的字符串是 System::String^
数据类型,因此您需要将其声明为该类型,而不是 char*
。
using namespace System;
namespace TestNamespace
{
static ref class TestClass
{
literal String^ TestString = "fish";
};
}
现在 TestString
将在 C# 中显示为 TestNamespace.TestClass.TestString
。