나는 C++의 기본의 묘리를 터득 노력하고, 나는이 코드 조각에 붙어에 클래스에 대한 포인터를 설정할 때 : 나는를 실행하면오류 : 타입의 이름이없는, 0
#include<iostream>
using namespace::std;
class Node
{
public:
int x;
Node *ptr_next;
};
class LinkedList
{
public:
Node *head;
head = 0; //If I comment out this line the code compiles
};
int main()
{
LinkedList linked_list;
return 0;
}
나는이 오류가 발생 위 : 나는 0
에 head
을 설정할 수없는 이유
error: ‘head’ does not name a type
는 이해가 안 돼요; 나는 this question을 보았고 위의 오류의 가능한 원인은 컴파일러가 어떤 클래스를 참조했는지 알지 못하는 것 같습니다 (내 경우 Node
). 그러나, 여기에 해당해서는 안됩니다. 을 Node
에 대한 포인터로 선언하면 내 코드가 정상적으로 실행되기 때문입니다. 그것은 을 0
으로 설정하려 할 때 위의 오류가 발생합니다. 내가 뭘 놓치고 있니?
은 내가 LinkedList
클래스를 무시하고에 main
을 변경하는 경우 :
int main()
{
Node *head;
head = 0;
return 0;
}
코드는 잘 컴파일합니다. 따라서 내가 누락 된 것은 Node
과 LinkedList
사이의 상호 작용입니다. 이게 뭐야?
NSDMI 또는 생성자를 사용하십시오. – chris
클래스 선언에서 (const int와 같은 것을 사용하지 않는 한) 물건을 초기화하는 코드를 작성할 수 없으므로 생성자를 사용하십시오. –
두 가지 모두 'LinkedList'에 생성자를 추가하여 문제를 해결했습니다. – Akavall