2013-03-07 40 views
11

Sorunum var, ve sorunun ne olduğundan emin değilim. Aşağıdaki kodda gösterildiği gibi, bir typename şablonu kullanan LinkedArrayList denilen bir sınıf oluşturma:Sınıf şablonu için bağımsız değişken listesi eksik

#pragma once 

template <typename ItemType> 

class LinkedArrayList 
{ 

private: 

class Node { 
    ItemType* items; 
    Node* next; 
    Node* prev; 
    int capacity; 
    int size; 
}; 

Node* head; 
Node* tail; 
int size; 

public: 

void insert (int index, const ItemType& item); 
ItemType remove (int index); 
int find (const ItemType& item); 
}; 

Şimdi, bu herhangi bir hata veya sorunları vermez. Ancak, .cpp dosyasındaki işlevleri oluşturmak bana "BağlanArrayList 'sınıfı şablonu için bağımsız değişken listesi eksik" hatasını veriyor. Ayrıca ItemType undefined olduğunu söylüyor.

Ben bunu yorumlayabilir ve ints için işlevlerde ItemTypes değiştirirseniz çünkü, şablonla ilgisi var gibi görünüyor
#include "LinkedArrayList.h" 

void LinkedArrayList::insert (int index, const ItemType& item) 
{} 

ItemType LinkedArrayList::remove (int index) 
{return ItemType();} 

int find (const ItemType& item) 
{return -1;} 

, o değil: Burada .cpp, çok basit bir koddur herhangi bir hata ver. Ayrıca, tüm kodu ayrı bir .cpp yerine .h içinde yaparsam, aynı zamanda iyi çalışır.

Sorunun kaynağıyla ilgili herhangi bir yardım büyük ölçüde takdir edilecektir.

Teşekkürler. derleyici olmayacak çünkü

#include "LinkedArrayList.h" 

template<typename ItemType> 
void LinkedArrayList<ItemType>::insert (int index, const ItemType& item) 
{} 

template<typename ItemType> 
ItemType LinkedArrayList<ItemType>::remove (int index) 
{return ItemType();} 

template<typename ItemType> 
int LinkedArrayList<ItemType>::find (const ItemType& item) 
{return -1;} 

İkincisi, bu tanımlamalar bir .cpp dosyada koymak edilemez:

Her

cevap

13

Öncelikle bu bir sınıf şablonunun üye fonksiyonları için bir tanım vermelidir nasıl Bunları gizli olarak kendi görev noktalarından somutlaştırır. Örneğin, this Q&A on StackOverflow.

İlgili konular