Properties 托管C++;错误C2664
我有这个结构:Properties 托管C++;错误C2664,properties,copy-constructor,managed-c++,c2664,Properties,Copy Constructor,Managed C++,C2664,我有这个结构: #pragma once #include "Defines.h" #ifndef _COLOR_H_ #define _COLOR_H_ namespace BSGameFramework { namespace Graphics { ref struct Color { public: Color(BYTE r, BYTE g, BYTE b); Color(BYTE r, BYTE g,
#pragma once
#include "Defines.h"
#ifndef _COLOR_H_
#define _COLOR_H_
namespace BSGameFramework
{
namespace Graphics
{
ref struct Color
{
public:
Color(BYTE r, BYTE g, BYTE b);
Color(BYTE r, BYTE g, BYTE b, BYTE a);
Color(Color% color) {};
static property Color White
{
Color get()
{
Color white = gcnew Color(255, 255, 255);
return white; // Here the error
}
}
private:
BYTE r;
BYTE g;
BYTE b;
BYTE a;
};
}
}
#endif
当我编译文件时,我会遇到以下错误:
错误1错误C2664:“BSGameFramework::Graphics::Color::Color(常量BSGameFramework::Graphics::Color%)”:无法将参数1从“BSGameFramework::Graphics::Color^”转换为“常量BSGameFramework::Graphics::Color%”c:\users\nicola\desktop\directx prove\BSGameFramework\bsgame\Color.h 24 1 bsgame
PS:字节
在Defines.h中定义为无符号字符
已解决:
我已按如下方式更改了属性:
static property Color^ White
{
Color^ get()
{
Color ^white = gcnew Color(255, 255, 255);
return white;
}
}
const
对于托管类型参数没有意义。将构造函数更改为:
Color(Color% color)
将属性更改为:
static property Color^ White
{
Color get()
{
Color ^white = gcnew Color(255, 255, 255);
return white;
}
}
或
它不是C++。C++、C++、C++、CLI、C++和CX都是不同的语言。请编辑标签删除C++并添加正确的标签。好的,对不起,完成了!如果你能标记出发生错误的代码行,那会有帮助的。谢谢。我提到了C++ + CLI和C++ + CX,因为我不认为你使用的是真正管理的C++(根据,没有使用代码> REF Stult),但是我不确定它应该被标记为什么。或者我可能误解了托管C++是什么:多亏了你,也完成了:DThanks现在它工作了,你也忘了在Color^get()中更改Color get(),所以现在我有了这个静态属性Color^White{Color^get(){Color^White=gcnew Color(255,255,255);return White;}你能解释一下什么是颜色吗?我添加了另一个例子,它不在堆上分配对象,因为
Color
是一个struct
static property Color White
{
Color get()
{
return Color(255, 255, 255);
}
}