簡體   English   中英

如何在C ++中從類外部設置成員變量並利用該變量在類內部?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM