я в настоящее время есть два неназванных классы определены в моем foo.h:Определение функций имени неназванного класса?
class Foo {
public:
Foo();
class {
private:
int x;
int y;
public:
int GetX() { return x; }
int GetY() { return y; }
} Sub1;
class {
private:
int x;
public:
int GetX() { return x; }
} Sub2;
}
Этот код компилируется нормально, и он используется так:
Foo temp;
int Ax, Ay, Bx;
Ax = temp.Sub1.GetX();
Ay = temp.Sub1.GetY();
Bx = temp.Sub2.GetX();
Однако, теперь я хочу, чтобы переместить элемент определения функций к исходному file.The только так, как я знаю, чтобы разделить этот класс в файл заголовка файла и источника, чтобы назвать классы:
foo.h:
class Foo {
private:
class A {
private:
int x;
int y;
public:
int GetX();
int GetY();
};
class B {
private:
int x;
public:
int GetX();
};
public:
Foo();
A Sub1;
B Sub2;
}
foo.cpp:
int Foo::A::GetX() { return x; }
int Foo::A::GetY() { return y; }
int Foo::B::GetX() { return x; }
Этот код не то, что я хочу, однако, так как это некрасиво, и я не хочу с именем класса, в первую очередь.
Можно ли разбить класс на заголовочный файл и исходный файл? Или это просто плохой дизайн кода?
Рассмотрите возможность использования структур, если Sub1 и Sub2 будут только членами данных Foo. Затем вы можете удалить необходимость в функциях Get. – timato
Если ваши внутренние классы становятся больше, чем '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' –
Если вы используете неназванные внутренние классы, как компилятор знает, какую функцию GetX использовать? Вы не можете ссылаться на имя класса, так как его нет. –