Я вижу, что на вышеуказанный вопрос (и подобные вопросы) отвечают в разных местах здесь , здесь и здесь , но ни один из них не объясняет, что я действительно после.
Я также видел очень хорошее объяснение квалифицированного / неквалифицированного -id здесь . Вот мой код, я экспериментирую с переменными stati c, определенными в struct
.
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
struct foo {
static string name ;
};
string foo::name{"Warrior_Monk"};
int main(){
cout<<"foo::name is "<<foo::name<<endl;
//Chaging the name , and then calling the second name through a **temp** object which will be created
foo.name ="Great_Warriror_Monk"; // error:expected unqaulified-id before '.' token
//foo::name ="Great_Warriror_Monk"; // THIS IS THE FIX
foo temp ;
cout<<"foo::name is "<<temp.name<<endl;
cout<<"foo::name is "<<foo::name<<endl;
return 0 ;
}
Теперь внутри main () я безуспешно пытался изменить переменную stati c name
с помощью команды:
foo.name ="Great_Warriror_Monk";
, для которой G CC дал мне ошибку:
error:expected unqaulified-id before '.' token
Я знаю, что исправление:
foo::name ="Great_Warriror_Monk"
Но Я более склонен к пониманию ошибки. Ошибка говорит о том, что ожидалось unqualified-id
до '.'
токена. Из моего понимания неквалифицированного идентификатора из здесь , структура foo
хорошо квалифицируется как неквалифицированный идентификатор. Значит ли это, что ошибка неверна с ее формулировками?