2015-05-22 5 views
0

Я хочу сделать шаблонный класс на моем main.cpp затем обработать его на другой класс, который из другого заголовка/CPPПередача класса шаблона в качестве аргумента для другого класса файлов?

Heres мой код:

main.cpp

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


template<typename B> 
class foo{ 

}; 


int main() { 

return 0; 
} 

тест .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 

}  
} 

Итак, как я могу передать экземпляр класса шаблона или ввести «foo» из main.cpp? мне нужно изменить свой дизайн?

+0

Определите шаблон своего собственного заголовка, а затем включите этот заголовок в файлы, где вам нужно использовать 'foo' – Praetorian

+0

Определите' foo' в файле заголовка и включите этот заголовочный файл во все исходные файлы, которые хотите использовать 'Foo'. –

+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.

+0

Я вижу спасибо. мне нужно сделать foo.cpp для реализации прототипов из foo.h? –

+0

@CarloBrew: по крайней мере, в большинстве типичных случаев вы хотите поместить всю реализацию шаблона в заголовок (не идеально, но это жизнь, пока модули не будут добавлены к языку). –

+0

Я вижу. поэтому мой единственный выбор - реализовать все в заголовке? –

Смежные вопросы