Добрый день. После компиляции кода выскакивает ошибка unresolved externals.
class Name
{
public:
static int a;
};
void main()
{
Name::a = 5;
cout << Name::a << endl;
system("pause");
}
Почему? Дейтел вроде говорит, что так можно
Добрый день. После компиляции кода выскакивает ошибка unresolved externals.
class Name
{
public:
static int a;
};
void main()
{
Name::a = 5;
cout << Name::a << endl;
system("pause");
}
Почему? Дейтел вроде говорит, что так можно
Можно, только нужно правильно написать
#include <iostream>
using namespace std;
class Name
{
public:
static int a;
};
int Name::a = 5;
int main()
{
cout << Name::a << endl;
return 0;
}
Ошибка в первой строке main при обращении к объявленному (declared) но не определенному (defined) статическому члену класса действительно имеет место (изначально я ее недосмотрел, минусы в мою сторону в связи с этим вполне оправданы).
Во-вторых, старайтесь не использовать system("pause") для остановки исполнения программы, это системнозависимый непереносимый нерекомендуемый способ. Для этой цели лучше пользоваться стандартным средством std::cin.get() так:
#include <iostream>
class Name
{
public:
static int a;
};
int Name::a = 5;
int main()
{
Name::a = 5;
std::cout << Name::a << std::endl;
std::cin.get();
// system("pause");
}
std::cin.get() также не нужен. Консольное приложение либо запускается непосредственно в консоли, тогда подобное излишество не нужно, либо с под отладчика, а там есть stub для для этого.
– KoVadim
Aug 09 '16 at 20:38