繁体   English   中英

收到“使用未声明的标识符”错误

[英]Getting a “Use of undeclared identifier” error

我要在 C++ 中使用不同的方法创建一个自定义String class 。

我遇到的问题是在另一个文件中声明的方法出现“使用未声明的标识符”错误:

#include <iostream>
#include "String.h"

int main() {
    std::cout << "Hello World!\n";

    char str[] = "Today I am happy.";
  
    cout<<strlen(str); // error
    strlwr(str);      //error
}

这是另一个文件String.h

#include <iostream>
using namespace std;

class Strings
{
    public:

        char *s;

        Strings(char *a){
            int l=0;
            for(int i=0;a[i]!='\0';i++)
                l++;
            /*The length of string a*/
        
            s=new char[l+1];
        
        
            for(int i=0;a[i]!='\0';i++)
                s[i]=a[i];   
        }

        void strlwr(char *s1){          //method 
            for(int i=0;s1[i]!='\0';i++)
            {
                if(s1[i]>='A' && s1[i]<='Z')
                    s1[i]=(char)(s1[i]+32);
            }
    
            for(int i=0;s1[i]!='\0';i++)
                cout<<s1[i];
        }

        int strlen(char *s1)               //method 
        {
            int l=0;
            for(int i=0;s1[i]!='\0';i++)
            {
                l++;
            }
            return l;
        }

        int strcmp(char *s1,char *s2){

            while(*s1 != '\0' && *s2 != '\0' && *s1 == *s2){
                s1++;
                s2++;
            }
        
            if(*s1 == *s2){
                cout<<"They are equal";
                return 0; 
            }
            else if(*s1 >= *s2)
                return 1;
            else
                return -1;
        }
};

这与其他程序一起工作得很好。 我不知道为什么我现在有这个问题。

如果这些函数独立于 class,您可以声明它们static

static void strlwr(char *s1){          //method 
static int strlen(char *s1)               //method 

他们像这样使用它们:

cout<<String::strlen(str); // error
String::strlwr(str);      //error

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM