الكلمات الرئيسية خارجية والرموز الخارجية التي لم تحل
المحلول
تحتاج إلى إنشاء قاعدة البيانات خارج الرئيسية ()، وإلا فسوف تعلن فقط التظليل المتغير المحلي
gameserver.cpp:
#include GameSocket.h
Database db(1, 2, 3);
int main() {
//whatever
}
نصائح أخرى
المشكلة هي نطاق إعلان DB. الرمز:
extern Database db;
يعني حقا "ديسيبل أعلن على مستوى العالم في مكان ما, ، ليس فقط هنا ". لا يمضي الرمز بعد ذلك ويعلن في الواقع على مستوى العالم، ولكن داخل المحلي الرئيسية ()، وهو غير مرئي خارج الرئيسي (). يجب أن تبدو الكود هكذا، من أجل حل مشكلة الربط الخاص بك في
file1.c.
Database db;
int main ()
{
...
}
file2.c.
extern Database db;
void some_function ()
{
...
}
يتم تطبيق الجزء الخارجي على جميع ملفات CPP (والنتيجة OBJ)، لذلك لا يوجد أحد منهم بالفعل إنشاء DB.
إليك طريقة واحدة حول هذا. في قاعدة البيانات، تغيير extern Database db
ل:
#ifdef INSTANTIATE_DB
Database db;
#else
extern Database db;
#endif
ثم في واحدة من ملفات CPP الخاصة بك (قاعدة البيانات.cpp سيكون جيدا، إذا كان لديك واحدة) إضافة #define INSTANTIATE_DB
قبل #include "Database.h"
.
لا تنتمي إلى StackOverflow