2016-03-21 16 views
0

Şu an için bir süredir Sözdizimi Hatası C2061'e bakıyorum ve bunun genellikle üstbilgi dosyalarının döngüsel bağımlılıklarından kaynaklandığını anladım. Ancak, dosyalarımda bunu çözmem gerektiğine inanıyorum, ancak bu konuya devam ediyorum.C++ Özel Üstbilgi Dosyası - Sözdizimi Hatası C2061: tanımlayıcı

Arc.h

#pragma once 

#include <string> 

using namespace std; 

class Node; 

class Arc 
{ 
public: 
    Arc(Node &p_destination, const string &p_mode); 
    ~Arc(); 

private: 
    string m_mode; 
    Node* m_destination; 
}; 

Node.h

#pragma once 
#include <string> 
#include <vector> 

using namespace std; 

class Arc; 

class Node 
{ 
public: 
    Node(const string &p_name, const int &p_identifier, const float &p_latitude, const float &p_longitude); 
    ~Node(); 

    void set_arcs(Arc* p_arc) { m_arcs.push_back(p_arc); } //Line that causes the error 

private: 
    std::vector<Arc*> m_arcs; 
    //Other Private Variables removed 

}; 

başlık dosyaları, her iki ilgili CPP dosyaları dahil edilmiştir. Bu konuda herhangi bir yardım büyük takdir edilecektir!

Düzenleme:

"Syntax Error: identifier 'Arc'" 
+0

Arc'de 'Node' türünde bir üyeye sahip olabilirsiniz ve daha sonra' Node''da 'Arc' türünde bir üye var mı? – EdChum

+1

([* Neden C++ 'da namespace std kullanıldığını kötü uygulama olarak değerlendiriyor? *] (Http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-in-c-considered-bad- uygulama)) – Biffen

+2

@LoadData '.cpp' dosyasında' Node :: set_arcs' uygulamasının uygulanamaz mı? – Biffen

cevap

0

Sorun, "Arc" adının, genel ad alanındaki bir yöntem tarafından zaten kullanımda olmasıdır. Sınıfınızı kullanılmayan bir adla yeniden adlandırın ya da genel ad alanı olmayan bir ad alanına yerleştirin.

-4

aşağıdaki Tam hata iletisi dosyaların bir dairesel bağımlılığımızı var. Ark, Düğüme bağlıdır ve Düğüm, Arx'a bağlıdır. Bu çalışmaz, çünkü Arkı Düğümde ve ayrıca Arıda Düğüm'ü eklemelisiniz. Yönlendirme bildirimi burada biraz yardımcı olur, ancak başlık dosyasının içine bir kullanım koydunuz. Bunu yapmamalısınız çünkü o zaman Düğüm ve Yayınız std içinde. Daha fazla açıklama için buraya bakın. "using namespace" in c++ headers

+2

Yazıldığı gibi, sınıf tanımı hiçbir şekilde diğerine bağlı değildir. – molbdnilo

İlgili konular