老师,结构体的问题

来源:7-7 自定义类型--结构体与联合体

相信光变成光

2020-12-08

http://img.mukewang.com/szimg/5fcf48c2090a833510390822.jpg

http://img.mukewang.com/szimg/5fcf48fb09f092e008480324.jpg

当实例化BST对象时,如果left和right是指针变量不报错,去掉*,则报错,这是为什么?

代码:

#include <iostream>
using namespace std;
template<typename Key,typename Value>
class BST{
private:
struct Node{
    Key key;
    Value value;
    Node left;
    Node right;
    Node(Key key,Value value){
        this->key=key;
        this->value=value;
        this->left=this->right=NULL;
    }
};
  int count;
  Node root;
public:
BST(){
    root=NULL;
    count=0;
}
~BST(){

}
};
int main() {
  BST<string, int> bst = BST<string, int>();
  return 0;
}


写回答

1回答

quickzhao

2020-12-08

当然会报错。你如果不定义指针类型,结构体在此部分的大小对编译器而言是无法计算的,指针的大小是确定的。

0
0

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程