我在Visual C ++中有以下代码
#using <mscorlib.dll>
using namespace System;
__gc class classEx
{
public:
classEx()
{
data="abcd";
}
classEx(String *s)
{
data=s;
}
String* getNombre()
{
return data;
}
void setNombre(String *s)
{
data=s;
}
private:
String* data;
};
int main(void)
{
classEx* obj=new classEx();
return 0;
}
我已经将配置管理器更改为Release和Build进行了检查,问题是当我尝试编译时出现了一堆错误,例如:
我不能在第二个构造函数中使用String * s的最后一个错误点,为什么会这样?有什么我想念的吗?
由于
答案 0 :(得分:1)
如果要在项目属性中将clr:oldsyntax
的相应编译器选项设置为第一条消息,则以下代码在MS VS 2010中编译时没有错误
#include "stdafx.h"
using namespace System;
__gc class A
{
public:
A( String *s ) : data( s ) {}
String * get_data() { return data; }
private:
String *data;
};
int main()
{
A *pa = new A( "Hello World" );
Console::WriteLine( pa->get_data() );
return 0;
}
似乎第二条消息是您没有设置第一条消息中指出的选项的结果。
您应该选择项目 - &gt;属性 - &gt; general-&gt;支持CLR(或其他原因因为我有俄语版本的MS VS 2010我无法用英语命名该选项) - &gt; CLR:oldsyntax
答案 1 :(得分:-1)
您需要为托管代码使用不同的语法(而不是*运算符):
String ^ data;
您还需要/ clr命令行选项。
这篇文章有很多例子: http://msdn.microsoft.com/en-us/library/ms177218.aspx