【发布时间】:2013-03-03 13:23:16
【问题描述】:
我有一个Note 和一个Track 类,它们都是*generator 成员。当我创建新的Note 对象时,我想将Note 的generator 成员链接到Track 的成员,但我不知道该怎么做。
#include <iostream>
using namespace std;
class Generator {
public:
virtual float getSample(int sample)=0;
};
class Note {
public:
Generator *generator; // THIS IS WHAT IS CAUSING ME TROUBLE
Note(Generator *aGen){
generator = aGen;
}
};
class Synth : public Generator{
public:
virtual float getSample(int sample);
int varA;
int varB;
Synth(){
varA = 5;
varB = 8;
}
};
float Synth::getSample(int sample){
varA = sample;
varB = 3;
return 0;
}
class Track {
public:
Generator *generator;
Track(){
generator = new Synth();
}
};
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
Track track = Track();
cout << "test" << endl;
return 0;
}
我想过做这样的事情,但它不起作用:
Track track = Track();
Note n = Note(&track.generator);
错误
prog.cpp: In function ‘int main()’:
prog.cpp:48:35: error: no matching function for call to ‘Note::Note(Generator**)’
prog.cpp:48:35: note: candidates are:
prog.cpp:13:5: note: Note::Note(Generator*)
prog.cpp:13:5: note: no known conversion for argument 1 from ‘Generator**’ to ‘Generator*’ prog.cpp:9:7: note: Note::Note(const Note&)
prog.cpp:9:7: note: no known conversion for argument 1 from ‘Generator**’ to ‘const Note&’ prog.cpp:48:10: warning: unused variable ‘n’ [-Wunused-variable] - See more at: http://ideone.com/E38ibe#sthash.V3QMcYJQ.dpuf
【问题讨论】:
-
错误消息似乎很清楚这里发生了什么。
标签: c++ pointers reference member