私はC++/cliの新人ですので、いくつかのことをクリアしたいと思います。私のプロジェクトでC++/cliはgetプロパティで演算子を使用できません
私は次のコードを使用しています:限り、私は理解して、プロパティを取得、
//fileloader class
ref class FileLoader {
public:
property ProgressListeners^ DownloadProgressListeners {
ProgressListeners^ get() { return progress_listeners; }
}
static property FileLoader^ Instance {
FileLoader^ get() { return theSingleInstance; }
}
//some methods etc...
}
//progresslistener class
public interface class ProgressListener {
void DownloadProgressCallback(Object^ sender, DownloadProgressChangedEventArgs^ e);
};
public ref class ProgressListeners {
typedef List<ProgressListener^> ListenersList;
ListenersList^ listeners = gcnew ListenersList;
public:
void ProgressCallback(Object^ sender, DownloadProgressChangedEventArgs^ e) {
for each (ProgressListener^ listener in listeners)
listener->DownloadProgressCallback(sender, e);
}
void operator += (ProgressListener^ listener) { listeners->Add(listener);}
};
をして、このように行動するcasueを持っていることは左辺値
// somewhere in code
ProgressListeners^ tmp = FileLoader::Instance->DownloadProgressListeners;
tmp += gcnew WindowsFormProgressListener(downloading_bar, m_log);
tmp += gcnew ConsoleProgressListener;
tmp += gcnew GUIProgressListener;
として使用することができません
しかし、私はこのように行動することができるよ場合、それははるかに良いでしょう:
FileLoader::Instance->DownloadProgressListeners += gcnew WindowsFormProgressListener(downloading_bar, m_log);
FileLoader::Instance->DownloadProgressListeners += gcnew ConsoleProgressListener;
FileLoader::Instance->DownloadProgressListeners += gcnew GUIProgressListener;
私はどのようにトン見当がつかないOこのコードが正しい行いと私はここに
あなたが望むようにしようとすると、どんなエラーメッセージが表示されますか? (私たちは推測しないでください。)ここ –
@DavidYawあなたは 重大\tコード\t説明\tプロジェクト\tファイル\tライン\t抑制状態 エラーです\t C2676 \tバイナリ「+」:「ProgressListenersは^」この演算子を定義していませんまたは事前に定義されたオペレータ\tランチャー\tワットに許容型への変換:\ unnamed_project \無名の\ランチャー\ LauncherForm.h が、答えは – bobra