나는 당신의 제안에 따라 지금 또 다른 문제가 있습니다.std :: list.sort (Predicate) 컴파일러 오류
namespace Ableton {
void MarkerContainer::sort(){
list.sort(compare);
}
}
그리고 내 MAIN.CPP은 다음과 같습니다 :
ifndef MARKERCONTAINE_H
define MARKERCONTAINE_H
include <list>
include <string>
include "Marker.h"
namespace Ableton {
struct DeferencedEqual{
DeferencedEqual(const Marker* compare_to) : compare_to_(compare_to) { }
bool operator()(Marker* c1) const {return *c1 == *compare_to_;}
private:
const Marker* compare_to_;
};
bool compare(Marker* const p1, Marker* const p2){return p1<p2;}
class MarkerContainer {
private:
std::list<Marker*> list;
double end_t;
inline bool exists(std::list<Marker*> *input_list, Marker* check);
// inline int computeInterval(double to_convert, bool beat_t=true);
public:
MarkerContainer();
MarkerContainer(double end_time);
bool addMarker(Marker* input);
double computeBeatTime(double sample_t);
double computeSampleTime(double beat_t);
void printAll();
void sort();
};
}
함수 종류 지금
이제include "Marker.h"
include "MarkerContainer.h"
include <iostream>
include <list>
include <string>
include <cctype>
using namespace std;
int main (int argc, const char * argv[])
{
Ableton::MarkerContainer::MarkerContainer container = Ableton::MarkerContainer::MarkerContainer(10.0);
Ableton::Marker::Marker* one = new Ableton::Marker::Marker(1.0, 1.0);
Ableton::Marker::Marker* two = new Ableton::Marker::Marker(2.0, 1.0);
Ableton::Marker::Marker* three = new Ableton::Marker::Marker(3.0, 1.0);
if(!container.addMarker(one))
cout << *one << "NOT Added" << endl;
if(!container.addMarker(two))
cout << *two << "NOT Added" << endl;
if(!container.addMarker(three))
cout << *three << "NOT Added" << endl;
cout << "-- LIST " << endl;
container.printAll();
cout << "-- LIST after sort" << endl;
//container.printAll();
}
나는이 LD 오류를 잡아, 그것은 아니 ... 나를 위해 이상한 소리 C++에서 저를 위해서? :-)
다시 사전에ld: duplicate symbol Ableton::compare(Ableton::Marker*, Ableton::Marker*) in /..../MarkerContainer.o and /..../main.o for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Command /Developer/usr/bin/clang++ failed with exit code 1
감사합니다, 당신은 나에게 어떤 책에 대한 STL을 제안 할 수 있습니다 않고 기술적으로
pedr0
을 speacking 이러한 경우에 무슨 일이 있었는지 더 잘 이해하기 위해, "지하"작동하는 방법
위 코드 스 니펫의 소스 파일을 나타낼 수 있습니까? – hmjd