Ошибка ссылки при добавлении массива в класс общих функций - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть общий класс функций.Основные вещи, просто есть функции, которые могут использовать несколько классов в моем проекте.Но я пытаюсь добавить массив структур, чтобы несколько классов могли использовать их для некоторых вещей.Я удалил этот массив структур из другого класса (класс 1) и добавил их в мой класс CommonFunctions.Они только будут прочитаны.

Но я получаю ошибки:

CommonFunctions.obj: ошибка LNK2005: "struct pup_file * pups" (? Pups @@ 3PAUpup_file @@ A) уже определенав Class1.obj ошибка LNK2005: «struct pup_file * pups» (? pups @@ 3PAUpup_file @@ A) уже определена в Class1.obj

фатальная ошибка LNK1169: найден один или несколько кратно определенных символов

Затем для каждого другого класса в проекте (который использует класс CommonFunctions, так что все они действительно) я получаю

ошибка LNK2005: "struct pup_file * pups" (? Pups @@ 3PAUpup_file @@ A)уже определено в main.obj

Кто-нибудь поможет мне с тем, что здесь происходит?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2012

После прочтения вашего комментария о том, что он должен быть статическим, вы, вероятно, захотите определить его как внешний, а не статический как статический. Это означает, что все, что включает это определение, получает свою СОБСТВЕННУЮ копию (т. Е. Копия не используется всеми файлами, которые включи его).

Extern означает, что вам нужно будет определить его где-нибудь в файле c / cpp, но вы должны определить его только один раз, а затем любой модуль компиляции, который включает этот extern, будет использовать ту же структуру.

Конечно, вы, возможно, захотите, чтобы у каждого модуля компиляции была своя копия переменной, и в этом случае вам нужен static.

0 голосов
/ 02 февраля 2012

Похоже, вы не объявили указатель pups (это не массив) внутри определения класса.
Если вы поместите его в заголовок, но вне класса, вы быполучить ошибки, подобные этим.

Решение состоит в том, чтобы убедиться, что pups объявлено внутри определения класса CommonFunctions.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...