c++ - पहल - स्थैतिक चर लिंक लिंक




सी लैंग्वेज प्रोग्राम (2)

आपको cpp फ़ाइल में statics को परिभाषित करना होगा।

Log.cpp

#include "Log.h"
#include <ostream>

string Log::theString;  // <---- define static here

void Log::method(string arg){
    theString = "hola";
    cout   << theString << endl; 
}

आपको using namespace std; भी हटा देना चाहिए using namespace std; हेडर से। आदत में जाओ, जबकि आप अभी भी कर सकते हैं। यह शीर्षलेख के साथ वैश्विक नामस्थान को प्रदूषित करेगा जहां भी आप हेडर शामिल करते हैं।

मैं एक मैक पर सी ++ कोड लिख रहा हूँ। संकलन करते समय मुझे यह त्रुटि क्यों मिलती है ?:

आर्किटेक्चर i386 के लिए अनिर्धारित प्रतीकों: "लॉग :: द स्ट्रिंग", संदर्भित: libTest.a (log.o) ld: log :: विधि (std :: string) में लॉग इन करें: आर्किटेक्चर i386 clang के लिए प्रतीक नहीं मिला: त्रुटि: लिंकर कमांड निकास कोड 1 के साथ विफल रहा (उपयोग -v को देखने के लिए उपयोग करें)

सुनिश्चित नहीं है कि मेरा कोड गलत है या मुझे एक्सकोड में अतिरिक्त झंडे जोड़ना है। मेरी वर्तमान एक्सकोड कॉन्फ़िगरेशन 'स्थिर लाइब्रेरी' प्रोजेक्ट के लिए डिफ़ॉल्ट हैं।

मेरा कोड:

Log.h ------------

#include <iostream>
#include <string>

using namespace std;

class Log{
public:
    static void method(string arg);
private:
    static string theString ;
};

Log.cpp ----

#include "Log.h"
#include <ostream>

void Log::method(string arg){
    theString = "hola";
    cout   << theString << endl; 
}

मैं एक टेस्ट कोड से 'विधि' को कॉल कर रहा हूं, इस तरह: 'लॉग :: विधि ("asd"):'

आपकी सहायता के लिए धन्यवाद।


आपने static string theString; घोषित की है static string theString; , लेकिन इसे परिभाषित नहीं किया है।

शामिल

string Log::theString;

आपकी cpp फ़ाइल में





static-methods