Geçerli imzayı kullanarak g ++ kodumu derlemeye çalışırken bir hata alıyorum:
cannot declare member function static void Foo::Bar(std::ostream&, const Foo::Node*) to have static linkage
Sorum iki yönlü:
- Neden bu şekilde derlenmiyor?
- Doğru imza nedir ve neden?
C ++ kullanırken imzalar hep benim ölümüm oldu
Düzenleme: İşte sınıf üstbilgisi dosyası da:
class Foo {
public:
Foo();
~Foo();
bool insert(const Foo2 &v);
Foo * find(const Foo2 &v);
const Foo * find(const Foo2 &v) const;
void output(ostream &s) const;
private:
//Foo(const Foo &v);
//Foo& operator =(const Foo &v);
//Not implemented; unneeded
struct Node {
Foo2 info;
Node *left;
Node *right;
};
Node * root;
static bool insert(const Foo2 &v, Node *&p);
static void output(ostream &s, const Node *p);
static void deleteAll(Node *p);
İlgili tüm satırları g ++ hatasından eklemelisiniz .
—
Keith Layne
Listelediğiniz hata mesajı, gönderdiğiniz kod tarafından üretilemez.
—
Robᵩ
Foo::Bar
Program parçanızda hiçbir yer yok . Lütfen karşılaştığınız hatayı gösteren eksiksiz , minimal bir program gönderin . Bir tam program olarak ve sizinle aynı hata iletisini tam olarak derlemek olabilir biridir. Bir asgari programı çıkarıldıktan sonra hata ilgisiz her hattıyla biridir. Gönderdiğiniz kod parçası tam veya minimum değil. Daha fazla bilgi için sscce.org adresine bakınız .