私は、うまく動作するsongというクラスを持っています。今は、曲のセットとそれに関連するメソッドを保持するSongLibraryというクラスを作成しようとしています。私はそれを動作させるのに問題があります。オブジェクトのセットを保持するC++クラス
私はセットを初期化するときに問題があると感じます。私はコンストラクタに何を入れるべきかはかなり分かりません。メインで
SongLibrary.h
#pragma once
#include <iostream>
#include <string>
#include <ostream>
#include <set>
#include "Song.h"
using std::string;
using std::cout;
using std::endl;
using std::ostream;
using std::istream;
using std::set;
class SongLibrary
{
private:
set<Song> m_songs;
public:
SongLibrary();
#pragma region Getters
set<Song> getSongs();
#pragma endregion
#pragma region Setters
void setSongs(set<Song> songs);
#pragma endregion
#pragma region methods
void displaySongs();
void addSong(Song song);
SongLibrary.cpp
#include "stdafx.h"
#include "SongLibrary.h"
SongLibrary::SongLibrary()
{
m_songs;
}
set<Song> SongLibrary::getSongs()
{
return m_songs;
}
void SongLibrary::setSongs(set<Song> songs)
{
m_songs = songs;
}
void SongLibrary::displaySongs()
{
for (Song song : m_songs)
{
song.display();
}
}
void SongLibrary::addSong(Song song)
{
m_songs.insert(song);
}
私はちょうど曲のインスタンスを作成し、曲を使用して、それにいくつかの曲のオブジェクトを追加します。 addSong()メソッド。次に、表示方法を知らないように表示しようとします。
Iは、現時点で取得していますエラーが ある「バイナリ 『<』:なしオペレータは、タイプ 『CONSTソング』の左オペランドをとる(または全く許容される変換は存在しない)が見つかりません」
'std :: set'は要素をソートするので、クラスに比較演算子のオーバーロードが必要です。 – UnholySheep
ありがとう、私は完全にそれが意味するが、今それを見て何を確認していない。 –
単純な 'std :: vector'を使わないのはなぜですか? – Jepessen