【发布时间】:2017-12-13 21:51:46
【问题描述】:
我只在一个文件中编写了一个程序。 但是现在,我想将头文件和 cpp 文件分开。 但是在我的程序中有模板类,继承和嵌套类。所以我很困惑。
我有 4 个类:BaseAbstract、Derived1、Nested、Derived2。
我认为有 4*2+1=9 文件,但我不确定。
你可以看到我的代码。(我简化了它以方便你的回答)
#include <iostream>
using namespace std;
template <class T>
class BaseAbstract{
public:
class NestedClass;
virtual int count (const T& val)=0;
};
template <class T>
class Derived1:public BaseAbstract<T>{
protected:
shared_ptr<T>dataS;
int sizeS;
int capacity;
public:
Derived1(){
sizeS=0;
capacity=0;
}
class NestedClass{
protected:
T* data;
public:
NestedClass(){
data=new T;
}
T* getData(){
return data;
}
NestedClass& operator++(){
data++;
return *this;
}
};
int count (const T& val){
for(int i=0;i<sizeS;i++){
if(dataS.get()[i]==val){
return 1;
}
}
return 0;
}
};
template <class K,class V>
class Derived2:public Derived1<pair<K, V> >{
public:
Derived2():Derived1<pair<K, V> >(){
this->capacity=10000;
this->dataS=dataS1;
}
};
int main(void){
Derived1<int> a;
}
【问题讨论】:
-
通常你只需要2个文件头和实现。如果包含 main,则只需要 2 或 3 个
-
@JakeFreeman 但我想为所有类创建 .cpp 和标题。
-
在这种情况下,您需要 6 个文件,因为您的嵌套类通常位于它所嵌套的类中。 7 如果你包括主要。也是 4*2 + 1 = 9 而不是 10
-
@JakeFreeman 是的,它必须是 9 。我写错了。能分开吗?对于此代码。
-
好的,我现在就这样做
标签: c++ file templates inheritance nested