我对C ++还是很陌生,我对模板和多态性有疑问。因此,我当时使用模板制作基本的函子,但后来我认为我想使用类并尝试做一些继承。那么有人可以正确地指导我吗?
我只尝试了一点,但遇到了错误。我真的很新,所以我不太了解...:P
这是我到目前为止输入的代码:
template <class temp>
class car{
public:
temp colour;
temp *ptcs = &colour;
temp setChar(temp a){
*ptcs = a;
}
virtual void sayChar()=0;
};
class lambo : public car<string>{
public:
void sayChar(){
cout << "My characteristic : " << *ptcs << endl;
}
};
class chiron : public car<string>{
public:
void sayChar(){
cout << "My characteristic : " << *ptcs << endl;
}
};
int main(){
}
我希望从car类继承并添加更多内容,同时能够访问和运行main()中两个派生类的代码
答案 0 :(得分:3)
为什么指针ptcs
?没有用。如果要访问派生类中基类的私有成员,请编写getter:
#include <string>
#include <iostream>
template <class T>
class car {
T colour;
public:
void setChar(T a) { colour = a; }
T getChar() const { return colour; }
};
class lambo : public car<std::string> {
public:
void sayChar() const {
std::cout << "My characteristic : " << getChar() << '\n';
}
};
class chiron : public car<std::string> {
public:
void sayChar() const {
std::cout << "My characteristic : " << getChar() << '\n';
}
};
int main()
{
lambo foo;
foo.setChar("red");
foo.sayChar();
chiron bar;
bar.setChar("blue");
bar.sayChar();
}
顺便说一句,您可能要搜索的搜索词是“好奇地重复使用模板模式”。