मैं आसपास googled से एक उद्देश्य सी समारोह कॉलिंग और मैं एक मिलियन परिणाम इस विषय लगता है। लेकिन कोई भी पेज मेरी मदद नहीं करता है। मुझे लगता है कि मुझे एक बहुत ही आम समस्या है। मैं ऑडियो प्रोग्रामिंग के साथ खेल रहा हूं विशेष रूप से ऑडियो कतारों के साथ काम कर रहा हूं। मेरे कार्यक्रम का उद्देश्य समस्या को समझाने के लिए कोई फर्क नहीं पड़ता। लेकिन संक्षेप में: जब मैं C++ कोड से ऑब्जेक्ट-सी फ़ंक्शन को कॉल करने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है। AudioRecorder.h: तो यहाँ मेरी कोड है कि त्रुटि है हैसी ++ कोड
#import <Foundation/Foundation.h>
@interface AudioRecorder : NSObject {
}
-(void)setup;
-(void)startRecording;
-(void)endRecording;
-(void)playAlarmSound;
@end
और यह दिया गया है: AudioRecorder.mm:
#import "AudioRecorder.h"
#include <AudioToolbox/AudioToolbox.h>
#include <iostream>
using namespace std;
@implementation AudioRecorder
static const int kNumberBuffers = 3;
...
static void HandleInputBuffer (void *aqData,
AudioQueueRef inAQ,
AudioQueueBufferRef inBuffer,
const AudioTimeStamp *inStartTime,
UInt32 inNumPackets,
const AudioStreamPacketDescription *inPacketDesc) {
AQRecorderState *pAqData = (AQRecorderState *) aqData;
if (inNumPackets == 0 &&
pAqData->mDataFormat.mBytesPerPacket != 0)
inNumPackets =
inBuffer->mAudioDataByteSize/pAqData->mDataFormat.mBytesPerPacket;
UInt32 size;
AudioQueueGetPropertySize (inAQ, kAudioQueueProperty_CurrentLevelMeter, &size);
char* levelMeterData = new char[size];
AudioQueueGetProperty (inAQ, kAudioQueueProperty_CurrentLevelMeter, levelMeterData, &size);
AudioQueueLevelMeterState* meterState = reinterpret_cast<AudioQueueLevelMeterState*>(levelMeterData);
cout << "mAveragePower = " << meterState->mAveragePower << endl;
cout << "mPeakPower = " << meterState->mPeakPower << endl;
delete levelMeterData;
[self playAlarmSound]; //<--- here I get the error: Use of undeclared identifier 'self'
if (pAqData->mIsRunning == 0)
return;
AudioQueueEnqueueBuffer (pAqData->mQueue, inBuffer, 0, NULL);
}
...
-(void)playAlarmSound {
NSLog(@"Alarmsound....");
}
जब मैं छोड़ "[आत्म playAlarmSound]," तो सब कुछ ठीक काम करता है। तो मैं अपने उद्देश्य + सी कोड से इस उद्देश्य-सी फ़ंक्शन को कैसे कॉल करूं?
@mbehan आप सही :) – Joe
यह सच थे, लेकिन मैं बहस चाहते हैं कि अंतर्निहित कारण 'स्वयं' याद आ रही है, क्योंकि इस का एक तरीका नहीं है वर्ग, नहीं क्योंकि यह एक सी-शैली समारोह है। किसी भी ऑब्जेक्टिव-सी वस्तु इस समारोह के भीतर प्रयोग करने योग्य है - यह सिर्फ इतना है कि 'स्वयं' एक वर्ग के तरीकों में ही उपलब्ध है। – Luke
मुझे विश्वास है कि है कि मैं क्या कहा गया है "आत्म केवल ऑब्जेक्टिव-सी तरीकों में मौजूद है और है कि एक सी शैली समारोह है" लिखने में कोई त्रुटि मूल रूप से किया था, जहां यह कहा एक लेकिन यह है कि एक ही संदेश देने चाहिए। – Joe