Dyikot
@Dyikot

Почему при использовании переменной в методе, выдает ошибку Linker Tools Error LNK2001?

Переменная question
.cpp file
#include "Test.h"
#include <fstream>
void Test::Start()
{
	std::fstream stream("Test.txt", std::fstream::in);
	std::string fileValue;
	while (!stream.eof())
	{
		std::getline(stream, fileValue);
		if (fileValue != "")
		{
			question += fileValue;
			question += "\n";
		}
		else
		{
			
			question.clear();
		}

	}
	stream.close();
}

.h file
#pragma once
#include <string>
#include <vector>
class Test
{
	static std::string question;
	static std::vector<int> answers;

	static void Show();
public:
	static void Start();
};

637505c2156d4688556906.png
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему при использовании переменной в методе, выдает ошибку
class Test
{
  static std::string question;


Потому что статическое поле класса нужно определить, его упоминание в определении класса -- это не определение. Определить его можно например так в .cpp вне всех функций:
std::string Test::question;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dima20155
you don't choose c++. It chooses you
В добавлении к ответу в jcmvbkbc
В C++17 добавили возможность использования inline для переменных и тогда код в header'e можно записать так:

inline static std::string question = 42;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы