4
Я полагаю, что статический член данных класса может быть ссылочный тип инициализации глобальной переменной, как это:Проблемы с ссылочного типа Static данные пользователя, может быть ошибка компилятора
#include <iostream>
#include <stdio.h>
const unsigned int global =0x1fee;
struct K {
int a;
static const int & iref;
};
const int & K::iref=global;
int main()
{
printf("%d\n",K::iref);
return 0;
}
Но в моем VC++ test, он может компилироваться, но производить исключение при его выполнении. Это просто ошибка с VC++? Я сделал что-то неправильно?
Вы намеренно пытаетесь связать 'unsigned int' с' signed int & '? – dyp
нет, только для проверки проблемы. нет проблем, если я изменил «global» на подписанный int. Итак, это похоже на ошибку, но я хочу удвоить подтверждение. – JavaMan
Это похоже на ошибку. Связывая 'unsigned int' с' signed int const & ', должен быть создан временный' unsigned int', а его срок службы расширен до целевой ссылочной переменной ('K :: iref'). Это почти похоже на то, что MSVC не выполняет это продление на всю жизнь. – dyp