Следующий код выдает undefined reference to 'Test::color'
.
#include <iostream>
struct Color{
int r,g,b;
};
void printColor(Color color) {
//printing color
}
class Test {
static constexpr Color color = {242,34,4};
public:
void print(){
printColor(color);
}
};
int main() {
Test test;
test.print();
return 0;
}
Почему этот код вызывает вышеуказанную ошибку и как лучше всего ее избежать, учитывая, что я хочу использовать последнюю версию стандарта C ++ 17?
Должен ли я определять статическую переменную-член так же, как это было необходимо в более ранних версиях стандарта (см. Первый ответ здесь: Неопределенная ссылка на статический символ constexpr [] ) или мне просто нужно создать новая Color
структура как видно ниже?
printColor(Color{color.r, color.g, color.b});
Edit:
Я использую CLion в Ubuntu 16.04, который, насколько я мог узнать, использует g ++ 5.4 для компиляции. Я установил его на использование C ++ 17 и все еще получаю ту же ошибку. Ошибка присутствует только тогда, когда color
передается функции.