1. 示例程序1:
1 class A; 2 3 void fun(A & rA) // ok: 引用不需要完整定义 4 { 5 } 6 7 int main() 8 { 9 A * pA; // ok: 指针不需要完整定义 10 *pA; // error: error C2027: use of undefined type 'A' 11 12 return 0; 13 }
2. 示例程序2:
1 class A; 2 3 void f(A a); // ok 4 5 void g(A a) // error: error C2027: 使用了未定义类型“A” 6 { 7 } 8 9 int main() 10 { 11 12 return 0; 13 }
3. 涉及到模板范例3:
1 template <class T> 2 class A; 3 4 void f(A<int> a); // ok 5 6 void g(A<int> a) // error: error C2027: 使用了未定义类型“A<T>” 7 { 8 } 9 10 int main() 11 { 12 return 0; 13 }
4. 涉及到模板范例4:
1 template <class T> 2 class A; 3 4 int main() 5 { 6 A<int> * pA; // ok: 模板实例化指针,注意,虽然出现了A<int>,但是不需要模板完整定义 7 *pA; // error: error C2027: use of undefined type 'A' with [ T = int ],需要模板完整定义 8 9 return 0; 10 }