неразрешенные внешние символьные структуры

0

ошибка LNK2001: неразрешенный внешний символ "public: static int WrappedVector :: _ N" (? _N @WrappedVector @@2HA)

header.h

struct WrappedVector
{
    static int _N;
    double *_x;
};

main.cpp

const int WrappedVector::_N = 3;

я не понимаю, что случилось

Теги:
visual-studio

1 ответ

1

Просто измените определение

 int WrappedVector::_N = 3; // Note no const

см. LIVE DEMO1

или декларации

 struct WrappedVector {
    static const int _N;
        // ^^^^^
    double *_x;
 };

см. LIVE DEMO2

последовательно.

Если вам нужна последняя форма (static const int), вы также можете инициализировать ее непосредственно в объявлении:

 struct WrappedVector {
    static const int _N = 3;
                     // ^^^
    double *_x;
 };

см. LIVE DEMO3

  • 0
    ошибка C2086: 'int WrappedVector :: _ N': ошибка переопределения C2655: 'WrappedVector :: _ N': определение или переопределение недопустимо в текущей области. IntelliSense: нельзя определить элемент "WrappedVector :: _ N" в текущей области
  • 0
    @borsch Невозможно воспроизвести, посмотрите живые демонстрации, которые я привел в своем ответе.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню