1

Visual Studio C++ 2008 で配列のような非常に単純な「カウント」を作成しようとしています。目的は、256 ビットのグレースケール イメージのヒストグラムを (表示せずに) 作成することです。

#pragma once
using namespace System::Collections::Generic;
using namespace System::Windows::Forms;
using namespace System::Drawing;
using namespace System;

ref class Histograma
{
public:

    Histograma(void);
    Histograma(System::IO::FileStream^ archivo, List<Panel^>^ paneles);
    Array^ ejecutar();

private:
    Array ^resultado;
    Bitmap^ imagen;
};

そしてここでの実装

#include "StdAfx.h"
#include "Histograma.h"

Histograma::Histograma(void)
{
    resultado = Array::CreateInstance(int::typeid,256);
}

Histograma::Histograma(System::IO::FileStream^ archivo, List<Panel^> ^paneles)
{
    Histograma();
    imagen = gcnew Bitmap(archivo);
}

Array^ Histograma::ejecutar()
{
    System::Byte valor;
    for(int x=0; x < imagen->Width ; x++)
    {
        for(int y=0; y < imagen->Height ; y++)
        {
            valor = imagen->GetPixel(x,y).ToArgb();
            resultado[valor]++;
        }
    }
    return resultado;
}

c2039 エラーが発生します:「デフォルト」は「システム::配列」のメンバーではありません

何か案は?これは、私が悪いことをしている非常に単純なものでなければなりませんが、それが何であるかはわかりません。

前もって感謝します

4

1 に答える 1

1

宣言を次のように変更します。

array<int> ^resultado;

そしてコンストラクターで:

resultado = gcnew array<int>(256);

編集

元のSystem::Array宣言を保持し、代わりに次の面倒な構文を使用することもできます。

resultado->SetValue((int)(resultado->GetValue(valor)) + 1, valor);
于 2013-08-12T22:49:40.443 に答える