Ваш код, как я пишу это:
classA{
string functionA(share_ptr<int>);
void functionB(){
classB* ptr = new classB(&classA::functionA);
}
}
Здесь:
Затем
//in other .h file
classA; //forward declaration
classB{
classB(string (classA::*funcPtr)(shared_ptr<int>); //constructor
}
Здесь:
Есть три левые скобки (
, но только две правые скобки )
.
В конце определения класса отсутствует точка с запятой.
Вы спрашиваете о ошибке связывания, но ваш код даже не должен компилироваться.
Когда вы указываете «Я не мог его скомпилировать», это кажется правильным.
Когда вы указываете «Я получаю [неопределенную ссылку на ...]», это тайна: с помощью инструментальной цепочки, которую вы, очевидно, используете, компоновщик не должен вызываться, когда компиляция терпит неудачу.
Таким образом, этот вопрос содержит некорректную информацию и любой ответ (например, гипотезу о том, что вы не определили функцию, или гипотезу о том, что вы ее где-то определили, но забыли связать в ней или гипотезу о том, что вы «Сообщение об ошибках от создания чего-то другого, кроме вашего кода», и так далее) было бы чистой догадкой.
Пожалуйста, разместите полную небольшую программу, которая компилирует и иллюстрирует ошибку связывания.
Приветствия & НТН.,
У меня это получилось ... это был правильный синтаксис .. просто я не очистил какой-то старый файл, прежде чем скомпилировать его снова .. потратил впустую мои часы на это .. – Steveng 2010-11-30 04:20:32