///////////////////////////////////////////////////////////////////////////////
// ClassTemplate.hpp
//#pragma once
#include <iostream>
template <typename T>
class ClassTemplate
{
public:
ClassTemplate()
{
std::cout << "ClassTemplate constructor" << std::endl;
}
void Test() const
{
std::cout << "ClassTemplate Test" << std::endl;
}
};
///////////////////////////////////////////////////////////////////////////////
// a.hpp
//#pragma once
class A
{
public:
A(ClassTemplate<int> const & obj)
{
// use it
obj.Test();
}
};
///////////////////////////////////////////////////////////////////////////////
// a.cpp
//#include "ClassTemplate.hpp"
//#include "a.hpp"
int main( int argc, char ** argv )
{
ClassTemplate<int> obj; // construct instance
A a(obj); // construct A, which uses obj
}
///////////////////////////////////////////////////////////////////////////////[/code]
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLyBDbGFzc1RlbXBsYXRlLmhwcAoKLy8jcHJhZ21hIG9uY2UKCiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyBDbGFzc1RlbXBsYXRlCnsKcHVibGljOgogICBDbGFzc1RlbXBsYXRlKCkKICAgewogICAgICBzdGQ6OmNvdXQgPDwgIkNsYXNzVGVtcGxhdGUgY29uc3RydWN0b3IiIDw8IHN0ZDo6ZW5kbDsKICAgfQoKICAgdm9pZCBUZXN0KCkgY29uc3QKICAgewogICAgICBzdGQ6OmNvdXQgPDwgIkNsYXNzVGVtcGxhdGUgVGVzdCIgPDwgc3RkOjplbmRsOwogICB9Cn07CgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vIGEuaHBwCgovLyNwcmFnbWEgb25jZQoKY2xhc3MgQQp7CiAgIHB1YmxpYzoKICAgICAgQShDbGFzc1RlbXBsYXRlPGludD4gY29uc3QgJiBvYmopCiAgICAgIHsKICAgICAgICAgLy8gdXNlIGl0CiAgICAgICAgIG9iai5UZXN0KCk7CiAgICAgIH0KfTsKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8gYS5jcHAKCi8vI2luY2x1ZGUgIkNsYXNzVGVtcGxhdGUuaHBwIgovLyNpbmNsdWRlICJhLmhwcCIKCmludCBtYWluKCBpbnQgYXJnYywgY2hhciAqKiBhcmd2ICkKewogICBDbGFzc1RlbXBsYXRlPGludD4gb2JqOyAvLyBjb25zdHJ1Y3QgaW5zdGFuY2UKCiAgIEEgYShvYmopOyAvLyBjb25zdHJ1Y3QgQSwgd2hpY2ggdXNlcyBvYmoKfQoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1svY29kZV0KCg==