C ++ Доступ к статическому полю внешнего класса [получение ошибки LNK2001] [дубликат]

Вам нужно использовать системные идентификаторы ресурсов. То есть, @android:id/text1 и @android:id/icon.

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:id="@android:id/icon"/>
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0"
    android:id="@android:id/text1"
    android:gravity="center"
    android:layout_below="@android:id/icon" />

Если вам нужно будет ссылаться на эти идентификаторы в коде, они будут android.R.id.text1 и android.R.id.icon.

55
задан subzero 14 February 2012 в 20:42
поделиться

2 ответа

Вы должны определить статику в файле cpp.

Log.cpp

#include "Log.h"
#include <ostream>

string Log::theString;  // <---- define static here

void Log::method(string arg){
    theString = "hola";
    cout   << theString << endl; 
}

Вы также должны удалить using namespace std; из заголовка. Входите в привычку, пока можете. Это будет загрязнять глобальное пространство имен с помощью std, где бы вы не включили заголовок.

70
ответ дан Luchian Grigore 19 August 2018 в 04:25
поделиться
  • 1
    Скорее инициализирует вместо определяет , нет (просто спрашивает)? – Vyktor 14 February 2012 в 20:49
  • 2
    @Vyktor Я думаю, что оба приняты. – Luchian Grigore 14 February 2012 в 20:51
  • 3
    Возможно, даже лучший термин заключается в том, что он выделяет пространство для строки. – btown 14 February 2012 в 21:55
  • 4
    Огромное спасибо. Ты мне очень помог! – JavaRunner 29 March 2014 в 11:10
  • 5
    Просто поставьте using namespace std; внутри своего собственного объявления пространства имен: P namespace your_custom_namespace { using namespace std; } – Pellet 17 March 2016 в 08:51

Вы объявили static string theString;, но не определили его.

Включить

string Log::theString;

в ваш файл cpp

13
ответ дан Lol4t0 19 August 2018 в 04:25
поделиться
Другие вопросы по тегам:

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