나는 내 자신의 문자열 클래스를 만들었고 어떤 이유로 든 intellisense는 내가 명확하게 정의하고 사용하려고하는 메소드를 선택하지 않습니다. intellisense가 이러한 메서드를 선택하지 않을뿐만 아니라 컴파일하려고 할 때 빌드 오류가 발생합니다.
intellisense가 선택하는 유일한 방법은 Display()
. Test()
그리고 수업 GetString()
에서 찾을 수 없으며 컴파일하려고 할 때 String
말합니다 There is no member Test() and no member GetString
.
string.cpp
#include "String.h"
#include <iostream>
using std::cout;
using std::endl;
String::String() :m_SingleChar('\0'), m_CString(nullptr)
{ }
String::String(char Character) : m_SingleChar(Character)
{ }
String::String(char * CharacterString)
{
if (CharacterString != nullptr)
{
m_CString = new char [strlen(CharacterString) + 1];
strcpy (m_CString, CharacterString);
}
}
String::~String()
{
delete [] m_CString;
}
String::String(const String & copy) : m_SingleChar(copy.m_SingleChar)
{
if (copy.m_CString != nullptr)
{
m_CString = new char [strlen(copy.m_CString) + 1];
strcpy (m_CString, copy.m_CString);
}
}
String & String::operator = (const String & rhs)
{
if (this != &rhs)
{
delete [] m_CString;
if(rhs.m_CString == nullptr)
m_CString = nullptr;
else
{
m_CString = new char[strlen(rhs.m_CString) + 1];
strcpy (m_CString, rhs.m_CString);
}
m_SingleChar = rhs.m_SingleChar;
}
return *this;
}
char * String::GetString(String m_CString)
{
char * Cstring = m_CString.m_CString;
return Cstring;
}
void String::Test()
{
}
void String::Display()
{
cout << "Single character: " << m_SingleChar << endl;
cout << "C String: " << m_CString << endl;
}
string.h
#ifndef STRING_H
#define STRING_H
class String
{
public:
String();
String(char Character);
String(char * CharacterString);
~String();
String(const String & copy);
String & operator = (const String & rhs);
char * GetString (String CString);
void Test();
void Display();
private:
char m_SingleChar;
char * m_CString;
};
#endif
이 줄에서 오류 메시지와 함께 정확한 오류가 발생합니다.
Error 1 error C2039: 'Test' : is not a member of 'String'
23 1 Potion Class 2
...
int * Potion::GetMoney (int * coins)
{
String something;
something.Test(); //Error occurs here
return coins;
}
클래스가 컴파일되지 않는 이유를 아는 사람이 있습니까?
사람이 컴파일러가 말하는 이유를 알고 있나요 void Test()
및 char * GetString
내 문자열 클래스의 멤버로 인식되지 않는다?
Microsoft Visual C ++ 2005에서 string.h와 string.cpp를 모두 컴파일했으며 지정한 오류가 발생하지 않았습니다.
C ++ 11을 사용하지 않기 때문에 로 교체 nullptr
했습니다 NULL
. 또한 & 로 대체 strcpy
하여 strcpy_s
컴파일됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다