将模板类作为参数传递给不同的文件类?

时间:2015-05-22 22:41:21

标签: c++

我想在main.cpp上创建一个模板类,然后在另一个来自另一个header / cpp的类上处理它

继承我的代码:

Main.cpp的

#include <iostream>
#include "test.h"


template<typename B>
class foo{

};


int main() {

return 0;
}

test.h

namespace sn{
class A{
    public:
        void getint(foo<int> asd);    //error because it doesn't know foo
};
}

TEST.CPP

#include<iostream>
#include "test.h"

namespace sn{

void A::getint(foo<int> asd){   //error because it doesn't know foo

}    
}   

那么如何从main.cpp传递模板类的实例或引入“foo”?我必须改变我的设计吗?

1 个答案:

答案 0 :(得分:0)

显而易见的方法是将foo的定义也移到标题中:

foo.h中:

template<typename B>
class foo{

};

test.h:

#include "foo.h"

namespace sn {
struct A {
    void getint(foo<int>);
};
}

从事物的外观来看,test.cpp将保持不变,main.cpp只会删除foo的定义。