检测默认构造函数是否有效

时间:2013-11-25 20:44:52

标签: c++ constructor

我在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; 消息,但是我和没有任何东西。有人帮我吗?提前谢谢。

2 个答案:

答案 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