2015-12-23 1 views
4

J'ai essayé de mettre en œuvre BST mais std::nullptr me montre une erreur:-id absolu attendu avant « nullptr »

error: expected unqualified-id before ‘nullptr’

#include <iostream> 
#include <memory> 

template <typename T> 
class BinTreeNode { 
public: 
    BinTreeNode(T key): data {key} { 
     left = std::nullptr; 
     right = std::nullptr; 
    } 
    ~BinTreeNode() {} 
    T data; 
    BinTreeNode<T>* left; 
    BinTreeNode<T>* right; 
}; 

template <typename T> 
class BinTree { 
public: 
    BinTree(){ 
     root = std::nullptr; 
    } 
    ~BinTree() {} 
    BinTreeNode<T>* root; 
}; 

int main(){ 
    BinTree<int> tree; 
} 

Je l'ai essayé la recherche dans Google, mais rien de significatif est venu lié à std::nullptr

+1

Veuillez ne pas modifier "Résolu" dans les titres des questions. Au lieu de cela, acceptez la réponse qui vous a été utile (cliquez sur la coche verte en dessous du nombre de votes reçus). –

+0

Presque un dupe: http://stackoverflow.com/q/21510121/179910 –

Répondre

13

nullptr, unlike nullptr_t, does not need std:: prefix. La raison en est que nullptr est un littéral, et n'est pas défini dans l'espace de noms std, de même que 42 n'est pas défini ici. Il ne nécessite pas non plus de directives d'inclusion à utiliser.

D'autre part, nullptr_t est un type, défini dans l'espace de noms std, et nécessite <cstddef> pour être inclus.

+2

Vous avez raison. Résolu – tomtom

+0

@tomtom, n'hésitez pas à accepter :) – SergeyA