AFAIK,我应该在头文件中声明一个类(及其函数),然后在它的相应.cpp文件中定义它们。
这是我的代码。
C1.h
#ifndef C1_H_
#define C1_H_
namespace newspace {
class C1 {
public:
void print(); //just a Hello World.
template <typename T1>
T1 power(T1 x, T1 y); // calculate x^y
};
}
#endif
C1.cpp
#include "C1.h"
#include<iostream>
namespace newspace {
void C1::print() // print() defined
{
std::cout<<"Hello World"<<std::endl;
}
template <typename T1>
T1 C1::power(T1 x, T1 y) //calculate x^y // power() defined
{
T1 ans=1;
for (T1 i=0;i<y;i++)
{
ans*=x;
}
return ans;
}
}
的main.cpp
#include <iostream>
#include "C1.h"
using namespace std;
int main()
{
newspace::C1 obj1; // created object obj1
obj1.print(); // works perfectly
cout<<"Enter two numbers";
int x,y;
cin>>x>>y;
cout<<obj1.power(x,y); // gives error
return 0;
}
print()
函数正常工作,但模板化函数power()
不起作用并提供错误
undefined reference to `int newspace::C1::power<int>(int, int)'
我在这里做错了什么?我该怎么做?