我在Foo.h
中有一个简单的类定义,如:
template <typename T>
class Foo
{
public:
Foo();
private:
char *topPtr;
}
我已经实现了Foo.cpp,如:
template <typename T>
Foo<T>::Foo(){
cout<<"default constructor is runned"<<endl;
this.topPtr=NULL;
if(topPtr==NULL){cout<<"topPtr is null"<<endl;}
}
现在,为了查看我的Stack构造函数是否运行,我写了一个简单的main.cpp,如:
#include <iostream>
#include "Foo.h"
using namespace std;
int main(){
Foo<int> foo1();
return 0;
}
我应该看到&#34;默认构造函数在我的终端上运行&#34; 和&#34; topPtr为空&#34; 消息,但是我和没有任何东西。有人帮我吗?提前谢谢。
答案 0 :(得分:4)
语句Foo<int> foo1();
声明一个返回Foo<int>
的函数foo1。你应该这样做:
Foo<int> foo1{};
请参阅:Link
您的this.topPtr=NULL;
应为this->topPtr=NULL;
答案 1 :(得分:1)
您不需要()
,通过使用它,您宣布一个名为foo1
的函数返回Foo<int>
并且不带参数。
Foo<int> foo1; // It calls default constructor
要使用this
指针,您应使用->
而不是.
this->topPtr // to dereference this pointer