0
我想從struct BlockA的構造函數中訪問對象regA和對象regB的成員。我希望能夠從構造函數中分配給BlockA的地址爲BlockA對象的每個regtype成員分配一個遞增地址。我希望分配給regtype成員的地址根據其大小遞增。將字符串轉換爲預定義的int變量名
現在,我有我的構造函數試圖分配一個地址給一個字符串,這是行不通的,對吧?我也有錯誤說,在MemberAddress函數中,regA和regB是未定義的。
有沒有辦法讓編譯器將MemberAddress函數返回的字符串識別爲BlockA中定義的成員的地址?指出你看到的其他問題也將不勝感激。
struct RegTypeA {
int addr ;
int val ;
};
struct RegTypeB {
int addr ;
int val ;
};
struct BlockA {
RegTypeA regA ;
RegTypeB regB ;
int addr;
BlockA(int address);
};
size_t BLOCK_STRUCT_MEMBERS_TypeSize(const unsigned int idx) {
static const size_t sizes[] = { sizeof(RegTypeA), sizeof(RegTypeB), };
if (idx < (sizeof(sizes)/sizeof(sizes[0]))) return sizes[idx];
return 0;
};
const char* BLOCK_STRUCT_MEMBERS_MemberAddress(const unsigned int idx) {
static const char * names[] = { regA.addr, regB.addr };
if (idx < (sizeof(names)/sizeof(names[0]))) return names[idx];
return "UNKNOWN";
};
BlockA::BlockA(int address) {
addr = address;
const int y = 1 +1 +1;
for (int i = 0; i < y; i++) {
size_t size = BLOCK_STRUCT_MEMBERS_TypeSize(i);
std::string regaddress = BLOCK_STRUCT_MEMBERS_MemberAddress(i);
regaddress = address;
address = address + size;
std::cout << address;
}
}
int main()
{
BlockA blockA1(3);
std::cout << blockA1.regA.addr << std::endl << blockA1.regB.addr;
std::cin.get();
return 0;
}
對於你需要什麼呢?追逐[XY-問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)? –
有兩個問題:1)你是否知道成員被存儲在內存地址上,相對於實例地址有偏移量,例如: 'BlockA a;'然後'&a ==&a.regA'和'&a + sizeof(int)+可能是一些填充==&a.regB' 2)1)與您想要做什麼有關? ...因爲tbh我根本不明白你想達到什麼目的 – user463035818