托管C ++错误C2664

时间:2014-01-03 14:52:17

标签: 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, 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(const BSGameFramework :: Graphics :: Color%)':无法将参数1从'BSGameFramework :: Graphics :: Color ^'转换为'const BSGameFramework :: Graphics :: Color%'c:\ users \ nicola \ desktop \ directx prove \ bsgameframework \ bsgame \ Color.h 24 1 BSGame

PS:BYTE在Defines.h中定义为unsigned char

解决:

我改变了属性如下:

static property Color^ White
{
    Color^ get()
{
    Color ^white = gcnew Color(255, 255, 255);

    return white;
}
}

2 个答案:

答案 0 :(得分:1)

const对托管类型参数没有意义。将构造函数更改为:

Color(Color% color)

答案 1 :(得分:1)

将属性更改为:

static property Color^ White
{
  Color get()
  {
    Color ^white = gcnew Color(255, 255, 255);

    return white;
  }
}

static property Color White
{
  Color get()
  {
    return Color(255, 255, 255);
  }
}