[英]How to set a member variable from outside of class and make use of that varible inside class in C++ ?
我對cocos2dx和c ++也很陌生。 我在類之間傳遞數據時遇到問題。
這是我的問題
我有一個class1,其中我需要設置變量的值並調用另一個類的函數,我們稱“ Class2”。
我需要在class1中執行此操作,而無需創建class2的對象。
到目前為止,我所做的如下。
Class1.cpp
#include "class2.h"
void Class1::methodinClassOne()
{
class2::imageName = this->str;
class2::doSth();
}
class2.h
class class2 {
public:
std::string imageName;
static void doSth();
};
class2.mm
#include "class2.h"
using namespace cocos2d;
void class2::doSth() {
id sth = [[UIApplication sharedApplication] delegate];
if ([sth isKindOfClass:[AppController class]])
{
printf("class2::doSth imageName %s",imageName.c_str());
SpriteVC *SPVC = [[SpriteVC alloc] initWithNibName:nil bundle:nil];
SPVC.imageNameString = [NSString stringWithFormat:@"%s",imageName.c_str()];
NSLog(@"class2::doSth imageName == %@",[NSString stringWithFormat:@"%s",imageName.c_str()]);
SPVC.imageView.frame = CGRectMake(480, 320, 333, 333);
AppController *controller = (AppController *)sth;
[controller.viewController.view addSubview:SPVC.imageView];
}
}
錯誤如下
在class2.h內部,我也嘗試使用
static std::string imageName;
代替
std::string imageName;
但這給了我以下錯誤
Undefined symbols for architecture i386:"class2::imageName", referenced from:class2::doSth() in XBridge.o
我知道我在這里缺少C ++的一個非常基本的概念。 但似乎找不到什么錯。 請幫我在這里。 謝謝
除了聲明之外,還必須在類主體之外定義靜態成員變量。 因此,首先,必須在class2
頭文件中將成員變量imageName
聲明為靜態,然后還必須在相應的mm文件中定義變量:
class2.h
class class2 {
public:
static std::string imageName;
static void doSth();
};
class2.mm
#include "class2.h"
std::string class2::imageName;
//other stuff
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.