В C ++ существует два типа операторов scope resolution - унарная область действия и область класса. Не существует области действия функции или оператора «любой конкретной родительской области». Это делает невозможным решение вашей проблемы, как и вообще, потому что вы не можете ссылаться на анонимные области. Однако вы можете либо создать псевдоним, переименовать переменные, либо сделать это частью класса, что, конечно же, подразумевает изменение кода. Это самое близкое, что я могу получить без переименования в этом конкретном случае:
#include
using namespace std;
int v = 1; // global
class Program
{
static int v; // local
public:
static int main ()
{
int v = 3; // within subscope
cout << "subscope: " << v << endl;
cout << "local: " << Program::v << endl;
cout << "global: " << ::v << endl;
}
};
int Program::v = 2;
int main ()
{
return Program::main ();
}
Существуют и другие способы, например, убедиться, что переменные не оптимизированы и находятся в стеке, тогда вы можете работать со стеком чтобы получить значение переменной, которую вы хотите, но давайте не будем этого делать.
Надеюсь, что это поможет!
Если вы не хотите настраивать схему репликации, почему бы просто не использовать (2 или 3) задания cron, дамп local / dump remote / update remote с локальным дампом. И нет, это не лучший способ сделать это, но это работает ...
С помощью just (2) выведите дамп local / update remote с помощью локального дампа, запускайте ежедневно @ 1:00 AM dump и!: 15AM update
0 1 * * * mysqldump --host="localhost" --user="user" --password="password" database_name > backup_name.sql
15 1 * * * mysql --host="remote_host" --user="user" --password="password" --port="3306" database_name < backup_name.sql