Поскольку ваша ошибка внешняя, я думаю, она не знает, что это за тип.
Вы включили строку?
#include <string>
И если да, то перед ним нужно поставить std::
:
#include <string>
extern std::string foo;
Примечание, убедитесь, что вы не используете директивы using
(using namespace std
или using std::string
) в вашем заголовочном файле, потому что тогда вы заставляете всех, кто предъявляет иск на ваш заголовочный файл, делать то же самое, что плохо практика.
Редактировать
... но вот как у меня это закодировано.
Вы уверены? Я только что попробовал это, и он прекрасно работает как в VC ++, так и в g ++:
хиджры
#include <string>
extern std::string foo;
B.cpp
#include "A.h"
std::string foo;
int main (void)
{
foo = "abc";
}
C.cpp
#include "A.h"
#include <iostream>
int some_function(void)
{
std::cout << foo << std::endl;
}
Попробуйте и посмотрите, работает ли оно.