如何在 C++ 中编写派生 class 的定义?
How to write the definition of a derived class in c++?
我不知道用模板编写 class 函数定义的语法。
我得到一个错误,这是编译器预期的; , 所以是
无效加;
任何人都知道解决这个问题!
template<class Type
class basic{
protected:
Type x;
public:
int value;
//virtual void print() =0;
basic(Type xArg):x(xArg){}
};
template<class Type>
class plus:public basic<Type>{
public:
Type y;
plus(Type xArg, Type yArg):basic<Type>(xArg),y(yArg){}
void print();
};
//template<class Type>
void plus<Type>::print(){
cout << "x : " << x << endl;
cout << "y : " << y << endl;
}
假设我们有一个基数 class:
template<class T>
class MyBase {
public:
T value;
virtual void print() {
std::cout << "MyBase.value: " << value;
}
virtual ~MyBase() = default;
};
我们可以推导它并像这样覆盖print
。它不一定是模板,但我在示例中使用了一个模板。
template<class T>
class MyDerived : MyBase<T>
{
public:
void print() override {
std::cout << "MyDerived.value: " << MyBase<T>::value;
}
};
此外,我喜欢做的事情是用base
来表示基数class:
template<class T>
class MyDerived : MyBase<T>
{
public:
using base = MyBase<T>; // Use this to indicate the base
void print() override {
std::cout << "MyDerived.value: " << base::value << '\n';
}
};
我不知道用模板编写 class 函数定义的语法。
我得到一个错误,这是编译器预期的; , 所以是 无效加; 任何人都知道解决这个问题!
template<class Type
class basic{
protected:
Type x;
public:
int value;
//virtual void print() =0;
basic(Type xArg):x(xArg){}
};
template<class Type>
class plus:public basic<Type>{
public:
Type y;
plus(Type xArg, Type yArg):basic<Type>(xArg),y(yArg){}
void print();
};
//template<class Type>
void plus<Type>::print(){
cout << "x : " << x << endl;
cout << "y : " << y << endl;
}
假设我们有一个基数 class:
template<class T>
class MyBase {
public:
T value;
virtual void print() {
std::cout << "MyBase.value: " << value;
}
virtual ~MyBase() = default;
};
我们可以推导它并像这样覆盖print
。它不一定是模板,但我在示例中使用了一个模板。
template<class T>
class MyDerived : MyBase<T>
{
public:
void print() override {
std::cout << "MyDerived.value: " << MyBase<T>::value;
}
};
此外,我喜欢做的事情是用base
来表示基数class:
template<class T>
class MyDerived : MyBase<T>
{
public:
using base = MyBase<T>; // Use this to indicate the base
void print() override {
std::cout << "MyDerived.value: " << base::value << '\n';
}
};