“Y n'est pas le nom d'un type” d'erreur en C++

Je ne sais pas quoi chercher pour trouver une explication à cela, c'est pourquoi je demande.
J'ai ce code qui signale l'erreur:

struct Settings{
    int width;
    int height;
} settings;

settings.width = 800; //'settings' does not name a type error
settings.height = 600; //'settings' does not name a type error

int main(){
    cout << settings.width << " " << settings.height << endl;

mais si je mets de l'affectation de la valeur en principal, cela fonctionne:

struct Settings{
    int width;
    int height;
} settings;

main () {
    settings.width = 800; //no error
    settings.height = 600; //no error

Pouvez-vous m'expliquer pourquoi?

EDIT:
Quant à Ralph Tandetzky réponse, voici mon struct code. Pourriez-vous me montrer comment affecter les valeurs que vous avez fait avec mon extrait de struct?

struct Settings{
    struct Dimensions{
        int width;
        int height;
    } screen;

    struct Build_menu:Dimensions{
        int border_width;
    } build_menu;
} settings;
Double Possible de "X n'est pas le nom d'un type" d'erreur en C++ et nom de la Classe n'est pas le nom d'un type en C++
Alors que votre point est correct, j'aime bien le Andy réponse ici la plupart en raison de son simplicty. Aussi thumbs up pour le drôle de changement de titre.

OriginalL'auteur Qwerty | 2013-06-05