C++: Как общедоступная статическая функция членства может получить доступ к частным переменным члена экземпляра?

Вы могли попытаться обработать события ComboBox's TextInput или PreviewTextInput, делание текста ищет себя, выбирая самый соответствующий объект, и устанавливая "e. Обработанный = верный". Просто мысль.Надеюсь, это поможет!

редактирование:

Это работает на отдельный символ (т.е. если Вы введете букву "j", то это выберет первый объект, который содержит "j" или "J"), но я уверен, что существует способ сделать это с Вашим управлением.Приятного отдыха!

private void MyComboBox_PreviewTextInput(object sender, TextCompositionEventArgs e) {
    foreach (ComboBoxItem i in MyComboBox.Items) {
        if (i.Content.ToString().ToUpper().Contains(e.Text.ToUpper())) {
            MyComboBox.SelectedItem = i;
            break;
        }
    }
    e.Handled = true;
}
8
задан Bob Murphy 9 October 2009 в 17:05
поделиться

5 ответов

This looks a little bizarre:

Chunk::
Chunk*  GetNextFilledChunk()
{

Is that a typo? Should it be:

Chunk* Chunk::GetNextFilledChunk()
{

? It looks like you're accidentally defining GetNextFilledChunk to be a plain function rather than a member of Chunk.

21
ответ дан 5 December 2019 в 04:55
поделиться

Во-первых, как уже упоминалось другими, определение функции неверно. Кроме того, дружественная функция не требуется, и спецификаторы доступа здесь не имеют значения, поскольку вы предполагаете, что функция должна быть частью класса и, очевидно, не принимается компилятором из-за опечаток.

Что касается прямого ответа на ваш вопрос : Как может общедоступная статическая функция-член получить доступ к частным переменным-членам экземпляра?

Не может; только нестатические функции-члены могут обращаться как к статическим, так и к нестатическим переменным, а статические функции-члены могут обращаться только к статическим переменным-членам. Причина: Для вызова статической функции не требуется создание экземпляра объекта и, следовательно, нет this указателя на статическую функцию-член и, следовательно, в свою очередь, нет нестатических переменных-членов для доступ.

2
ответ дан 5 December 2019 в 04:55
поделиться

I think singleton pattern fits very well for this. You can access any kind of member functions without worrying if you are accessing it from static functions or not...

0
ответ дан 5 December 2019 в 04:55
поделиться

The problem is in your definition of GetNextFilledChunk. As written in the CPP file you have declared a non-member function which is preceeded by a badly formed label. It will not line up with the member function in the header.

The correct signature is as follows

Chunk*  
Chunk::GetNextFilledChunk() {
  ...
}
8
ответ дан 5 December 2019 в 04:55
поделиться

You're defining your member function wrong. It should be defined like this:

Chunk * Chunk::GetNextFilledChunk()
{
    ...
}

That the definition happened to compile fine was due to a quirk with the language: class names get inserted within their own namespaces, so Chunk::Chunk is equivalent to Chunk, so you were defining a global function by accident.

7
ответ дан 5 December 2019 в 04:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: